#!/bin/bash
# 服务器总资源监控脚本
# 功能:监测CPU个数、总内存大小、总磁盘大小
# 设置文件夹和文件路径
LOG_DIR="/log"
LOG_FILE="$LOG_DIR/computer.txt"
# 创建日志目录(如果不存在)
if [ ! -d "$LOG_DIR" ]; then
mkdir -p "$LOG_DIR"
if [ $? -ne 0 ]; then
echo "错误:无法创建日志目录 $LOG_DIR" >&2
exit 1
fi
echo "已创建日志目录: $LOG_DIR"
fi
# 覆盖已存在的日志文件
> "$LOG_FILE"
# 获取当前时间
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
# 获取CPU核心数(包括物理核心和逻辑核心)
CPU_CORES=$(nproc 2>/dev/null || grep -c ^processor /proc/cpuinfo 2>/dev/null || echo "未知")
# 获取总内存大小(GB)
TOTAL_MEMORY_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}')
TOTAL_MEMORY_GB=$(echo "scale=2; $TOTAL_MEMORY_KB/1024/1024" | bc 2>/dev/null || echo "未知")
# 获取磁盘总大小(GB)
# 这里获取根分区(/)的大小
DISK_SIZE_GB=$(df -BG / | awk 'NR==2 {print $2}' | sed 's/G//' 2>/dev/null || echo "未知")
# 如果上述方法失败,尝试使用另一种方法
if [ "$DISK_SIZE_GB" = "未知" ]; then
DISK_SIZE_BYTES=$(df / | awk 'NR==2 {print $2}')
DISK_SIZE_GB=$(echo "scale=2; $DISK_SIZE_BYTES/1024/1024/1024" | bc 2>/dev/null || echo "未知")
fi
# 写入日志文件
{
echo "=== 服务器资源监控报告 ==="
echo "生成时间: $TIMESTAMP"
echo "CPU核心数: $CPU_CORES"
echo "总内存大小: $TOTAL_MEMORY_GB GB"
echo "根分区磁盘大小: $DISK_SIZE_GB GB"
echo "==========================="
} >> "$LOG_FILE"
echo "服务器资源数据已保存到: $LOG_FILE"