cpustat 是一个用于监控和报告CPU使用情况的工具,它是 sysstat 包的一部分。在脚本中使用 cpustat 可以帮助你自动化地收集系统性能数据。以下是一些使用 cpustat 的技巧:
基本使用:
cpustat 可以显示CPU的使用情况。-p 选项可以指定要监控的CPU核心。-m 选项可以显示每个CPU核心的详细信息。输出格式化:
-e 选项可以将输出保存到CSV文件中,便于后续分析。-h 选项可以在输出中包含列标题。定时采样:
watch 命令可以定时刷新 cpustat 的输出。watch -n 2 cpustat -p ALL 2 每2秒更新一次所有CPU核心的使用情况。筛选特定指标:
-c 选项可以只显示CPU的上下文切换次数。-i 选项可以显示中断信息。-w 选项可以显示CPU等待时间。结合其他命令:
cpustat 的输出与其他命令结合使用,例如 grep、awk 或 sed,以便进一步处理数据。cpustat -p ALL 1 | grep 'cpu ' | awk '{print $1, $2, $3}' 可以筛选出每个CPU核心的用户态、系统态和空闲时间。日志记录:
cpustat 的输出重定向到日志文件中,以便长期监控和分析。cpustat -p ALL 1 >> cpu_usage.log 每秒将所有CPU核心的使用情况追加到 cpu_usage.log 文件中。脚本自动化:
cpustat 可以实现自动化监控和报警。以下是一个简单的示例脚本,用于监控CPU使用率并将超过80%的情况记录到日志文件中:
#!/bin/bash
LOG_FILE="cpu_usage.log"
THRESHOLD=80
while true; do
cpustat -p ALL 1 | grep 'cpu ' | awk '{print $1, $2, $3, $9}' | while read -r line; do
cpu_usage=$(echo $line | awk '{print $4}' | tr -d '%')
if [ "$cpu_usage" -gt "$THRESHOLD" ]; then
echo "$(date) - CPU usage is above threshold: $cpu_usage%" >> $LOG_FILE
fi
done
sleep 60
done
这个脚本会每分钟检查一次所有CPU核心的使用率,并将超过80%的情况记录到 cpu_usage.log 文件中。