Linux实用监控脚本——使用 Shell 检测进程 CPU 利用率

原创
ithorizon 6个月前 (10-17) 阅读数 24 #Linux

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利用率。通过编写简洁的脚本,我们可以实现实时监控、定时任务以及图形化展示等功能,从而更好地了解系统性能,优化资源分配。期待本文能对您有所帮助。

本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Linux


热门