根据网上博客实现,发现只能监测进程离线,然后对其进行重启;然而,脚本无法打印程序正常状态的信息。自己通过不断修改测试,发现问题主要在重启程序的命令上(需要让重启的程序在后台运行,不然会影响监视脚本进程,使其无法正常工作)。具体程序如下:
#!/bin/bash
while [ 1 ] ; do
sleep 3
if [ $(ps -ef|grep exe_name|grep -v grep|wc -l) -eq 0 ] ; then # 将exe_name替换成你想要监测的可执行程序名字
sleep 1;
echo "[`date +%F\ %T`] exe_name is offline, try to restart..." >> ./logs/check_es.log;
./exe_name & # 将exe_name替换成你想要监测的可执行程序名字
else
echo "[`date +%F\ %T`] exe_name is online..." >> ./logs/check_es.log;
fi
done
note:
- 在后台运行shell脚本,只需在可执行文件后添加&,例如:
./exe_name &
- 如果不想把程序的打印信息输出到该终端,只需在可执行文件前添加nohub,例如:
nohup ./exe_name