added fan script diagnoctics
This commit is contained in:
parent
906e2efb8d
commit
3f727ee1cd
121
nano-diagnostics.sh
Executable file
121
nano-diagnostics.sh
Executable file
|
|
@ -0,0 +1,121 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Linux Fan Diagnostic Script
|
||||
# Monitors CPU usage, temperature, and processes every 200ms
|
||||
# Usage: ./fan_diagnostic.sh [duration_in_seconds]
|
||||
|
||||
# Default duration: 60 seconds (can be overridden by argument)
|
||||
DURATION=${1:-60}
|
||||
INTERVAL_MS=200 # milliseconds
|
||||
LOG_FILE="fan_diagnostic_$(date +%Y%m%d_%H%M%S).log"
|
||||
|
||||
echo "==================================" | tee -a "$LOG_FILE"
|
||||
echo "Linux Fan Diagnostic Script" | tee -a "$LOG_FILE"
|
||||
echo "Started: $(date)" | tee -a "$LOG_FILE"
|
||||
echo "Duration: ${DURATION}s | Interval: ${INTERVAL_MS}ms" | tee -a "$LOG_FILE"
|
||||
echo "Log file: $LOG_FILE" | tee -a "$LOG_FILE"
|
||||
echo "==================================" | tee -a "$LOG_FILE"
|
||||
echo "" | tee -a "$LOG_FILE"
|
||||
|
||||
# System Information
|
||||
echo "=== SYSTEM INFORMATION ===" >> "$LOG_FILE"
|
||||
echo "Hostname: $(hostname)" >> "$LOG_FILE"
|
||||
echo "Kernel: $(uname -r)" >> "$LOG_FILE"
|
||||
echo "CPU Model: $(lscpu | grep 'Model name' | cut -d':' -f2 | xargs)" >> "$LOG_FILE"
|
||||
echo "CPU Cores: $(nproc)" >> "$LOG_FILE"
|
||||
echo "" >> "$LOG_FILE"
|
||||
|
||||
# Installed packages that might affect CPU/Fan
|
||||
echo "=== INSTALLED SOFTWARE ===" >> "$LOG_FILE"
|
||||
if command -v docker &> /dev/null; then
|
||||
echo "Docker version: $(docker --version)" >> "$LOG_FILE"
|
||||
echo "Docker containers:" >> "$LOG_FILE"
|
||||
docker ps -a >> "$LOG_FILE" 2>&1
|
||||
echo "" >> "$LOG_FILE"
|
||||
fi
|
||||
|
||||
if command -v snap &> /dev/null; then
|
||||
echo "Snap packages:" >> "$LOG_FILE"
|
||||
snap list >> "$LOG_FILE" 2>&1
|
||||
echo "" >> "$LOG_FILE"
|
||||
fi
|
||||
|
||||
echo "Recently installed packages (apt):" >> "$LOG_FILE"
|
||||
if [ -f /var/log/apt/history.log ]; then
|
||||
grep -A 2 "Install:" /var/log/apt/history.log | tail -20 >> "$LOG_FILE"
|
||||
fi
|
||||
echo "" >> "$LOG_FILE"
|
||||
|
||||
# Temperature sensors available
|
||||
echo "=== TEMPERATURE SENSORS ===" >> "$LOG_FILE"
|
||||
if command -v sensors &> /dev/null; then
|
||||
sensors >> "$LOG_FILE" 2>&1
|
||||
else
|
||||
echo "lm-sensors not installed. Install with: sudo apt install lm-sensors" >> "$LOG_FILE"
|
||||
fi
|
||||
echo "" >> "$LOG_FILE"
|
||||
|
||||
# Monitoring loop
|
||||
echo "=== MONITORING DATA ===" >> "$LOG_FILE"
|
||||
echo "Starting monitoring for ${DURATION} seconds..." | tee -a "$LOG_FILE"
|
||||
|
||||
START_TIME=$(date +%s)
|
||||
END_TIME=$((START_TIME + DURATION))
|
||||
SAMPLE=0
|
||||
|
||||
while [ $(date +%s) -lt $END_TIME ]; do
|
||||
SAMPLE=$((SAMPLE + 1))
|
||||
TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S.%3N")
|
||||
|
||||
echo "--- Sample #${SAMPLE} at ${TIMESTAMP} ---" >> "$LOG_FILE"
|
||||
|
||||
# CPU Temperature
|
||||
if [ -f /sys/class/thermal/thermal_zone0/temp ]; then
|
||||
TEMP=$(cat /sys/class/thermal/thermal_zone0/temp)
|
||||
TEMP_C=$((TEMP / 1000))
|
||||
echo "CPU Temp: ${TEMP_C}°C" >> "$LOG_FILE"
|
||||
fi
|
||||
|
||||
# Overall CPU usage
|
||||
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
|
||||
echo "CPU Usage: ${CPU_USAGE}%" >> "$LOG_FILE"
|
||||
|
||||
# Top 5 CPU consuming processes
|
||||
echo "Top CPU processes:" >> "$LOG_FILE"
|
||||
ps aux --sort=-%cpu | head -6 | tail -5 >> "$LOG_FILE"
|
||||
|
||||
# Docker containers CPU usage (if docker is running)
|
||||
if command -v docker &> /dev/null && docker ps -q &> /dev/null; then
|
||||
echo "Docker container stats:" >> "$LOG_FILE"
|
||||
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" >> "$LOG_FILE" 2>&1
|
||||
fi
|
||||
|
||||
# Fan speed (if available)
|
||||
if command -v sensors &> /dev/null; then
|
||||
FAN_SPEED=$(sensors | grep -i "fan" | head -1)
|
||||
if [ ! -z "$FAN_SPEED" ]; then
|
||||
echo "Fan: $FAN_SPEED" >> "$LOG_FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "" >> "$LOG_FILE"
|
||||
|
||||
# Progress indicator
|
||||
CURRENT_TIME=$(date +%s)
|
||||
ELAPSED=$((CURRENT_TIME - START_TIME))
|
||||
PROGRESS=$((ELAPSED * 100 / DURATION))
|
||||
printf "\rProgress: %d%% (Sample #%d, %ds/%ds) " "$PROGRESS" "$SAMPLE" "$ELAPSED" "$DURATION"
|
||||
|
||||
sleep 0.2
|
||||
done
|
||||
|
||||
echo "" | tee -a "$LOG_FILE"
|
||||
echo "==================================" | tee -a "$LOG_FILE"
|
||||
echo "Monitoring completed: $(date)" | tee -a "$LOG_FILE"
|
||||
echo "Total samples: ${SAMPLE}" | tee -a "$LOG_FILE"
|
||||
echo "Log saved to: $LOG_FILE" | tee -a "$LOG_FILE"
|
||||
echo "==================================" | tee -a "$LOG_FILE"
|
||||
echo ""
|
||||
echo "To analyze the log, send the file to me or run:"
|
||||
echo " grep 'CPU Temp:' $LOG_FILE | sort -k3 -n | tail -10"
|
||||
echo " grep 'CPU Usage:' $LOG_FILE | sort -k3 -n | tail -10"
|
||||
Loading…
Reference in a new issue