正文

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

文章摘要

这篇文章介绍了在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