在 Ubuntu 系统中,cpustat 是一个用于显示 CPU 使用情况的工具,通常由 sysstat 包提供。然而,cpustat 本身并不直接支持设置 CPU 监控阈值的功能。如果你想要监控 CPU 使用率并在超过特定阈值时采取行动,你可以结合使用其他工具或编写脚本来实现这一需求。
以下是一些方法来实现 CPU 监控和阈值警报:
watch 和 cpustat你可以使用 watch 命令定期运行 cpustat 并检查输出。例如,以下命令每 2 秒检查一次 CPU 的用户空间使用率,并在超过 80% 时打印警告:
watch -n 2 "cpu=$(cpustat -u 1 1 | awk '{print \$2}'); if (( $(echo \"$cpu > 80\" | bc) )); then echo \"CPU usage is above 80%: $cpu\"; fi"
sar 和脚本sar 是另一个可以报告系统活动的工具,也可以用来监控 CPU 使用率。你可以编写一个简单的脚本来检查 sar 的输出,并在超过阈值时执行某些操作。
首先,确保安装了 sysstat 包:
sudo apt-get install sysstat
然后,创建一个脚本来监控 CPU 使用率:
#!/bin/bash
THRESHOLD=80
while true; do
cpu_usage=$(sar 1 1 | awk '/Average:/ {print $NF}')
if (( $(echo "$cpu_usage > $THRESHOLD" | bc) )); then
echo "CPU usage is above $THRESHOLD%: $cpu_usage%"
# 在这里添加你想要执行的操作,例如发送邮件或记录日志
fi
sleep 2
done
保存脚本为 monitor_cpu.sh,然后运行它:
chmod +x monitor_cpu.sh
./monitor_cpu.sh
top 或 htop虽然 top 和 htop 主要是交互式工具,但你可以使用它们的批处理模式来获取 CPU 使用率,并编写脚本来解析输出。
例如,使用 top:
while true; do
cpu_usage=$(top -bn1 | grep load | awk '{printf("%.2f"), $(NF-2)}')
if (( $(echo "$cpu_usage > $THRESHOLD" | bc) )); then
echo "CPU usage is above $THRESHOLD%: $cpu_usage%"
fi
sleep 2
done
systemd 服务如果你希望更系统化地监控 CPU 使用率,可以考虑创建一个 systemd 服务来定期检查 CPU 使用率,并在超过阈值时执行某些操作。
创建一个 systemd 服务文件:
[Unit]
Description=CPU Usage Monitor
[Service]
ExecStart=/path/to/your/script.sh
Restart=always
[Install]
WantedBy=multi-user.target
保存为 /etc/systemd/system/cpu-monitor.service,然后启用并启动服务:
sudo systemctl enable cpu-monitor.service
sudo systemctl start cpu-monitor.service
通过这些方法,你可以实现对 CPU 使用率的监控并在超过特定阈值时采取行动。选择适合你需求的方法进行实现。