企业项目管理、ORK、研发管理与敏捷开发工具平台

网站首页 > 精选文章 正文

通过实例学习Linux脚本02 监控特定进程的资源使用情况

wudianyun 2025-03-26 17:53:48 精选文章 28 ℃

用于监控特定进程的 CPU 和内存使用情况。如果 CPU 或内存使用量超过设定的阈值,脚本会在控制台打印警报信息。

Bash 脚本

 #!/bin/bash
 
 # 检查是否提供了足够的参数
 if [ "$#" -ne 3 ]; then
     echo "用法:$0 进程名称 CPU阈值 内存阈值"
     echo "示例:$0 firefox 10 20"
     exit 1
 fi
 
 # 将参数赋值给变量
 process_name=$1
 cpu_threshold=$2
 memory_threshold=$3
 
 # 定义监控进程资源的函数
 process_monitor() {
     # 根据进程名称获取进程的 PID
     pid=$(pgrep -f "$process_name")
     if [ -z "$pid" ]; then
         echo "未找到进程 '$process_name'。请确保该进程正在运行。"
         exit 1
     fi
 
     # 获取进程的 CPU 和内存使用率
     cpu_usage=$(ps -p $pid -o %cpu=)
     memory_usage=$(ps -p $pid -o %mem=)
 
     # 比较 CPU 和内存使用率与阈值
     if (( $(echo "$cpu_usage > $cpu_threshold" | bc -l) )); then
         echo "警报:进程 '$process_name' 的 CPU 使用率过高(${cpu_usage}%)"
     fi
 
     if (( $(echo "$memory_usage > $memory_threshold" | bc -l) )); then
         echo "警报:进程 '$process_name' 的内存使用率过高(${memory_usage}%)"
     fi
 }
 
 # 每分钟循环监控进程
 while true; do
     process_monitor
     sleep 60
 done

使用说明

保存脚本到文件:将脚本内容保存到一个文件中,例如 process_monitor.sh

给文件添加执行权限

 chmod +x process_monitor.sh

运行脚本:提供进程名称和 CPU、内存阈值作为参数运行脚本。例如:

 ./process_monitor.sh firefox 10 20

该命令会监控 firefox 进程,如果其 CPU 使用率超过 10% 或内存使用率超过 20%,脚本会在控制台打印警报信息。

注意事项

参数检查:脚本会检查是否提供了三个参数(进程名称、CPU 阈值和内存阈值),确保用户输入正确的参数数量。

pgrep 的使用:脚本使用 pgrep -f 根据进程名称获取 PID。如果系统中存在多个相同名称的进程,pgrep 可能会返回多个 PID。可以通过指定更详细的进程名称或使用其他参数来确保 pgrep 返回正确的 PID。

bc 的使用:脚本使用 bc 来比较浮点数,确保 CPU 和内存使用率的比较准确。

监控频率:脚本默认每分钟检查一次进程的资源使用情况,可以通过修改 sleep 60 的时间来调整检查频率。

警报信息:脚本会在控制台打印警报信息,方便用户及时了解进程的资源使用情况。

Tags:

最近发表
标签列表