#!/bin/bash

# 配置部分
LOG_DIR="/var/log/sysmon"
MAX_LOGS=10

# 创建日志目录
mkdir -p "$LOG_DIR"

# 获取当前时间用于日志文件名（格式：年月日_时分）
DATE_TIME=$(date +"%Y%m%d_%H%M")
LOG_FILE="$LOG_DIR/sysmon_${DATE_TIME}.log"

# 函数：获取 CPU 使用率（排除空闲）
get_cpu_usage() {
    top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8"%"}'
}

# 函数：获取内存使用情况（已用 / 总量）
get_mem_usage() {
    free -m | awk '/^Mem:/ {printf "%.1f%% (%dMB/%dMB)\n", $3*100/$2, $3, $2}'
}

# 函数：获取 CPU 温度（单位：摄氏度）
get_cpu_temp() {
    if [ -f /sys/class/thermal/thermal_zone0/temp ]; then
        # 适用于树莓派或某些 Linux 系统
        echo "$(cat /sys/class/thermal/thermal_zone0/temp | cut -c1-2).$(cat /sys/class/thermal/thermal_zone0/temp | cut -c3-)"
    else
        echo "N/A"
    fi
}

# 写入日志头
echo "=== System Monitor Log ===" > "$LOG_FILE"
echo "Start time: $(date)" >> "$LOG_FILE"
echo "--------------------------" >> "$LOG_FILE"

# 主循环：每分钟记录一次
while true; do
    TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
    CPU_USAGE=$(get_cpu_usage)
    MEM_USAGE=$(get_mem_usage)
    CPU_TEMP=$(get_cpu_temp)

    echo "[$TIMESTAMP] CPU: $CPU_USAGE | Memory: $MEM_USAGE | Temp: ${CPU_TEMP}°C" >> "$LOG_FILE"

    # 清理旧日志（只保留最新的 MAX_LOGS 个）
    LOG_COUNT=$(ls -1t "$LOG_DIR"/sysmon_*.log 2>/dev/null | wc -l)
    if [ "$LOG_COUNT" -gt "$MAX_LOGS" ]; then
        TO_DELETE=$(ls -1t "$LOG_DIR"/sysmon_*.log | tail -n +$((MAX_LOGS+1)))
        rm -f $TO_DELETE
    fi

    sleep 60
done
