用于监控特定进程的 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 的时间来调整检查频率。
警报信息:脚本会在控制台打印警报信息,方便用户及时了解进程的资源使用情况。