有时候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/
文章评论