Linux的Shell判断进程是否存在,并做相应的动作例如重新启动

2022-06-12 54点热度 0人点赞 0条评论

有时候Linux下运行的程序并不一定是一个服务,但是我们希望能监测它的运行状态,例如是否进程还在运行,如果没有运行,发出警报,或者自动启动,进而能保持程序的持续运行。

我们可以想办法写一个脚本来监测,然后可以做到定时任务(crontab)里去,例如每个1分钟监测一次。

以下是脚本内容,可以将echo "Not running"替换成再次启动程序或你的逻辑。

#!/bin/bash

# pgrep -f "vdcserver" 不能这样使用,不然就监测到本身也是一个符合的进程,导致误判
if pgrep -x "vdcserver" > /dev/null; then
        echo "Running"
else
        echo "Not running"
fi

或者这样做:

if ! pgrep -x "gedit" > /dev/null
then
    echo "Stopped"
fi

如果你运行的程序对外提供http端口服务的,那么还可以根据http状态码来检测,这样做是比较准确的,详见:

https://blog.terrynow.com/2022/05/30/linux-shell-script-to-check-url-status-code-and-do-next/

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论