Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例

Posted 学无止境,一点一滴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例相关的知识,希望对你有一定的参考价值。

Shell脚本如下:

vim monitor.sh

#!/bin/bash

while true   # 无限循环
flag=`ps -aux |grep "httpd" |grep -v "grep" |wc -l`
do
        if [[ $flag -eq 0 ]]   # 判断进程数如果等于0,则启动httpd
        then
                `systemctl start httpd`   # 启动httpd
                echo `date` - "Apache restart" >> running.log   # 将重启时间写入自定义的日志文件
        else
                echo "Apache is running..." >> /dev/null
        fi
        sleep 3s  # 延迟3秒后进入下次循环
done

运行脚本:bash monitor.sh &

命令末尾的 & 号,意思是将这个任务放到后台去执行

那么如何停止脚本运行呢?

(1)首先查找运行脚本的进程PID号

ps -aux |grep "bash monitor.sh"

(2)终止脚本进程:

kill -9 进程PID号

 

对脚本做一些说明:

ps -aux | grep    # 查找进程

参数:-aux 意思是显示所有包含其他使用者的进程

ps -aux | grep "process_name"

若只执行这条命令,会导致出现一个 grep 进程,也就是说若只用上面的命令,会永远得到至少一个进程(grep进程),所以还需要用下面的命令,排除 grep 本身这个进程

grep -v "grep"

最后再用 wc -l 命令统计进程数

if 判断如果获得的进程数等于0,则证明服务没有运行,执行启动命令

 

sleep命令可以用来将目前动作延迟一段时间

sleep 1      延迟1秒

sleep 1s    延迟1秒

sleep 1m   延迟1分钟

sleep 1h    延迟1小时

sleep 1d    延迟1天

 

以上是关于Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例的主要内容,如果未能解决你的问题,请参考以下文章

Linux下使用Shell脚本实现进程监控

每天三分钟搞定linux shell脚本24 后台模式运行

linux shell脚本执行命令时创建子进程问题(特定的情况,例如后台运行管道分支或子shell等,脚本可能会创建子进程执行命令)

linux shell脚本执行命令时创建子进程问题(特定的情况,例如后台运行管道分支或子shell等,脚本可能会创建子进程执行命令)

linux shell脚本监控进程是否存在

Linux下同进程多进程号实时监控