本文目录导读:

我来分享几种用脚本监控硬件温度的方法,涵盖不同操作系统和需求:
🖥️ Linux 系统监控
使用 lm-sensors 基础监控
#!/bin/bash # 硬件温度监控脚本 (Linux) # 安装依赖 # sudo apt-get install lm-sensors # sudo sensors-detect --auto echo "=== CPU温度监控 ===" sensors | grep -E "Package|Core|CPU" echo "=== GPU温度监控 (NVIDIA) ===" nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader echo "=== 硬盘温度监控 ===" # 需要安装 hddtemp # sudo apt-get install hddtemp hddtemp /dev/sda /dev/sdb 2>/dev/null
完整的实时监控脚本
#!/bin/bash
# monitor_temp.sh - 完整温度监控
while true; do
clear
echo "⌛ 监控时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "================================"
# CPU温度
echo "🔥 CPU温度:"
sensors | grep -E "Physical|Package|Core0" | \
awk '{printf " %s: %s\n", $1, $2}'
# 主板温度
echo -e "\n🔧 主板温度:"
sensors | grep -E "SYSTIN|CPUTIN|AUXTIN" | \
awk '{printf " %s: %s\n", $1, $2}'
# GPU温度
if command -v nvidia-smi &> /dev/null; then
echo -e "\n🎮 GPU温度:"
nvidia-smi --query-gpu=name,temperature.gpu,utilization.gpu \
--format=csv,noheader
fi
# 硬盘温度
echo -e "\n💾 硬盘温度:"
for disk in /dev/sd[a-z]; do
if [ -e "$disk" ]; then
temp=$(hddtemp "$disk" 2>/dev/null | awk '{print $4}')
echo " $disk: $temp"
fi
done
sleep 5 # 每5秒刷新
done
温度告警脚本
#!/bin/bash
# temp_alert.sh - 温度超限告警
# 阈值设置
CPU_LIMIT=80 # CPU温度阈值(°C)
GPU_LIMIT=85 # GPU温度阈值(°C)
DISK_LIMIT=50 # 硬盘温度阈值(°C)
# 获取CPU温度
cpu_temp=$(sensors | grep "Package" | awk '{print $4}' | sed 's/+//;s/°C//')
# 获取GPU温度 (如果是NVIDIA)
gpu_temp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader)
# 磁盘温度
disk_temp=$(hddtemp /dev/sda 2>/dev/null | awk '{print $4}' | sed 's/°C//')
# 告警逻辑
check_temp() {
local name=$1
local temp=$2
local limit=$3
if (( $(echo "$temp > $limit" | bc -l) )); then
echo "🚨 警告: $name 温度过高! 当前: ${temp}°C, 阈值: ${limit}°C"
# 可以添加邮件/短信通知
# echo "温度告警" | mail -s "服务器温度告警" admin@example.com
else
echo "✅ $name 温度正常: ${temp}°C"
fi
}
# 执行检查
check_temp "CPU" "$cpu_temp" $CPU_LIMIT
check_temp "GPU" "$gpu_temp" $GPU_LIMIT
check_temp "磁盘" "$disk_temp" $DISK_LIMIT
🪟 Windows 系统监控
PowerShell 脚本
# 使用 WMI 获取温度
Get-WmiObject -Namespace "root/wmi" -Query "SELECT * FROM MSAcpi_ThermalZoneTemperature" |
ForEach-Object {
$temp = ($_.CurrentTemperature / 10) - 273.15
Write-Host "CPU温度: $([math]::Round($temp, 2))°C"
}
# 使用第三方工具 (需安装 OpenHardwareMonitor)
$temp = Get-Content "C:\Program Files\OpenHardwareMonitor\HardwareMonitor.exe" -ErrorAction SilentlyContinue
完整的监控脚本
# monitor_temp.ps1
# 需要安装:
# 1. OpenHardwareMonitor (开源硬件监控)
# 2. 配置其日志导出功能
$logFile = "D:\temp_monitor.log"
while ($true) {
Clear-Host
Write-Host "=== 实时温度监控 ===" -ForegroundColor Green
Write-Host "时间: $(Get-Date)"
# 读取 OpenHardwareMonitor 输出
$data = Get-Content "C:\temp_data\temp_output.txt" -Tail 10
foreach ($line in $data) {
Write-Host $line -ForegroundColor Yellow
}
# 日志记录
Add-Content $logFile "$(Get-Date): $data"
Start-Sleep -Seconds 5
}
🍎 macOS 系统监控
#!/bin/bash
# macOS 温度监控
# 使用 powermetrics (需要 sudo)
echo "=== 温度监控 ==="
sudo powermetrics --samplers smc -n1 | grep -E "CPU die temperature|GPU die temperature"
# 或使用第三方工具 osx-cpu-temp
if command -v osx-cpu-temp &> /dev/null; then
osx-cpu-temp
fi
# 简化版本 - 使用 iStats gem
# gem install iStats
istats | grep -E "CPU|GPU"
📊 高级监控方案
带GUI的监控脚本 (Python)
#!/usr/bin/env python3
# temp_monitor.py
import psutil
import time
import tkinter as tk
from tkinter import ttk
def get_temperatures():
"""获取系统温度"""
temps = {}
try:
# CPU温度 (Linux)
for name, entries in psutil.sensors_temperatures().items():
if name == 'coretemp':
temps['CPU'] = entries[0].current
temps['CPU'] = temps.get('CPU', 'N/A')
except:
temps['CPU'] = 'N/A'
return temps
def update_display():
"""更新显示"""
temps = get_temperatures()
temp_label.config(text=f"CPU温度: {temps['CPU']}°C")
root.after(1000, update_display)
# 创建GUI
root = tk.Tk()"温度监控")
root.geometry("300x200")
temp_label = ttk.Label(root, text="", font=("Arial", 24))
temp_label.pack(pady=50)
update_display()
root.mainloop()
Web远程监控
# 结合 websocket 和温度监控
#!/bin/bash
# web_temp_monitor.sh
# 简单Web服务器推送温度数据
while true; do
temp_data=$(sensors | grep "Package" | awk '{print $4}')
# 生成 HTTP 响应
printf "HTTP/1.1 200 OK\nContent-Type: text/plain\n\n"
printf "当前CPU温度: %s°C\n" $temp_data
sleep 2
done | nc -l -p 8080
💡 实用建议
-
安装必要的工具:
# Ubuntu/Debian sudo apt-get update sudo apt-get install lm-sensors hddtemp nvidia-smi sudo sensors-detect --auto
-
配置开机自启:
# 添加 cron 任务 crontab -e # 添加: */5 * * * * /path/to/temp_monitor.sh
-
保存监控数据:
# 记录到文件 echo "$(date) CPU: $cpu_temp°C" >> /var/log/temp_monitor.log
-
使用InfluxDB + Grafana:适合生产环境的专业监控方案
选择脚本时请注意:
- 内核支持:确保CPU驱动已正确加载
- 用户权限:某些命令需要root权限
- 硬件兼容性:不同品牌主板读取方式可能不同
需要我详细解释某个部分,或者帮你调试具体的监控脚本吗?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播