Linux实用监控脚本——使用 Shell 检测进程 CPU 利用率
原创Linux实用监控脚本——使用Shell检测进程CPU利用率
在Linux系统中,进程的CPU利用率是衡量系统性能的重要指标之一。通过监控进程的CPU利用率,可以帮助管理员及时发现并解决性能瓶颈,优化系统资源分配。下面,我们将介绍怎样使用Shell脚本检测进程的CPU利用率。
一、获取进程CPU利用率的基本命令
在Linux系统中,我们可以使用以下命令来获取进程的CPU利用率:
- `ps`:用于显示进程状态。
- `top`:用于显示系统资源使用情况。
- `vmstat`:用于显示虚拟内存统计信息。
- `iostat`:用于显示输入/输出设备的使用情况。
这些命令都可以提供涉及进程CPU利用率的信息,但它们的输出格式也许不太直观。为了方便处理,我们可以使用Shell脚本来提取和分析这些信息。
二、编写Shell脚本检测进程CPU利用率
下面是一个简洁的Shell脚本示例,用于检测指定进程的CPU利用率:
bash
#!/bin/bash
# 定义进程名
PROCESS_NAME="nginx"
# 获取进程ID
PID=$(pgrep -f $PROCESS_NAME)
# 检查进程是否存在
if [ -z "$PID" ]; then
echo "没有找到进程:$PROCESS_NAME"
exit 1
fi
# 获取进程CPU利用率
CPU_USAGE=$(ps -p $PID -o %cpu --no-headers)
# 输出最终
echo "进程 $PROCESS_NAME 的CPU利用率为:$CPU_USAGE%"
这个脚本首先定义了一个进程名`nginx`,然后使用`pgrep`命令获取该进程的ID。接着,使用`ps`命令获取该进程的CPU利用率,并将最终赋值给变量`CPU_USAGE`。最后,脚本输出进程的CPU利用率。
三、定时执行Shell脚本
为了持续监控进程的CPU利用率,我们可以将Shell脚本设置为定时任务。以下是一个cron作业示例,用于每5分钟执行一次检测:
bash
*/5 * * * * /path/to/script.sh
将上述cron作业添加到crontab文件中,可以使用以下命令:
bash
crontab -e
在打开的编辑器中,添加上述cron作业,然后保存并退出。
四、扩展功能:图形化展示进程CPU利用率
为了更直观地展示进程CPU利用率,我们可以使用第三方工具如`gnuplot`或`matplotlib`将CPU利用率数据绘制成图表。以下是一个使用`gnuplot`的示例:
bash
#!/bin/bash
# 定义进程名
PROCESS_NAME="nginx"
# 获取进程ID
PID=$(pgrep -f $PROCESS_NAME)
# 检查进程是否存在
if [ -z "$PID" ]; then
echo "没有找到进程:$PROCESS_NAME"
exit 1
fi
# 定义数据文件路径
DATA_FILE="/tmp/cpu_usage.txt"
# 清空数据文件
> $DATA_FILE
# 持续获取进程CPU利用率,并写入数据文件
while true; do
CPU_USAGE=$(ps -p $PID -o %cpu --no-headers)
echo "$(date +%Y-%m-%d\ %H:%M:%S) $CPU_USAGE" >> $DATA_FILE
sleep 5
done
# 使用gnuplot绘制图表
gnuplot -e "set terminal png; set output 'cpu_usage.png'; set xlabel '时间'; set ylabel 'CPU利用率'; plot '$DATA_FILE' using 1:2 with lines"
这个脚本会持续获取指定进程的CPU利用率,并将数据写入到`/tmp/cpu_usage.txt`文件中。然后,使用`gnuplot`绘制图表,并保存为`cpu_usage.png`。
五、总结
本文介绍了怎样使用Shell脚本检测Linux系统中进程的CPU利用率。通过编写简洁的脚本,我们可以实现实时监控、定时任务以及图形化展示等功能,从而更好地了解系统性能,优化资源分配。期待本文能对您有所帮助。