Linux下使用Shell脚本实现进程监控的流程(shell脚本调节cpu)满满干货

随心笔谈4个月前更新 admin
215 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了在Linux系统中使用Bash脚本实现的进程监控功能。脚本包含三个主要函数:`checkprocess`、`recordinfo` 和 `check`。 1. **`checkprocess`** 函数用于统计指定进程的运行数量。当传入参数为空时,返回1;否则,通过命令 `ps -ef` 获取所有运行的进程,筛选出指定进程并返回其数量。 2. **`recordinfo`** 函数处理进程退出的情况。当传入参数为空时,直接返回;否则,记录进程退出的时间信息,并重新启动该进程。 3. **`check`** 函数是进程监控的核心。它会调用 `checkprocess` 获取当前指定进程的数量,并根据返回值判断进程是否已退出。如果退出,则调用 `recordinfo` 进行记录和重新启动。 脚本还设置了循环检测机制,每隔3秒检查一次进程状态,并对多个进程进行监控。通过这种方式,可以自动处理进程退出和重新启动的问题,从而保证关键进程的稳定运行。 总结来看,这篇文章通过简单的Bash脚本实现了对关键进程的监控、记录和重新启动功能,适用于需要自动化的进程管理场景。

#!/bin/bash

#该函数检查关键进程的状态,最终返回进程的个数。
checkprocess()
{
# echo “checkprocess…$1”
if [ “$1″=”” ];
then
return 1
fi
process_num=`ps -ef|grep “$1” |grep -v “grep” |wc -l`
# echo “checkprocess num=$process_num”
return $process_num
}
#进程如有退出,则记录相关的信息,并做相关的处理
recordinfo()
{
# echo “check $1”
if [ “$1″=”” ];
then
return
fi
#打印进程退出的时间
date “+++++++++++++++++++ +%Y-%m-%d %H:%M:%S ‘$1’ exit! +++++++++++++++++++”
#重新拉起这个进程
“$1” &
echo “restart $1”
}

#检查进程的状态
check()
{
echo “####check $1”
if [ “$1″=”” ];
then
return
fi
checkprocess “$1”
check_result=$?
#如果该进程的个数为0,则说明该进程已经退出
if [ $check_result -eq 0 ];
then
recordinfo “$1″
# exit
fi
}
#循环检测
while [ 1 ] ; do
#关键进程列表,多个进程以逗号分隔,这里以两个进程为例子。
process_name=”https://www.jb51.net/article/test1,https://www.jb51.net/article/test2″
OLD_IFS=”$IFS”
IFS=”,”
arr=($process_name)
IFS=”$OLD_IFS”

for s in ${arr[@]}
do
check “$s”
done
sleep 3
# echo “check loop…”
done

© 版权声明

相关文章