Posted on 2020-02-10 16:06
魔のkyo 阅读(738)
评论(0) 编辑 收藏 引用 所属分类:
Programming 、
Linux
最后用了最简答的方法,分割线下方的代码会出现在没崩溃的时候莫名其妙重启。
# ! /bin/sh
appcmdline="$@"
while true
do
$appcmdline
echo `date +%Y-%m-%d` `date +%H:%M:%S` "Restart after 1 secound."
sleep 1
done
------------------以下为原文----------------------------
# ! /bin/sh
appcmdline="$@"
procnum=`ps -ef|grep "$appcmdline"|grep -v grep|wc -l`
if [ $procnum -eq 1 ]
then
pkill -2 -f "$appcmdline"
fi
while true
do
procnum=`ps -ef|grep "$appcmdline"|grep -v grep|wc -l`
if [ $procnum -eq 0 ]
then
nohup $appcmdline 1>/dev/null 2>&1 &
echo `date +%Y-%m-%d` `date +%H:%M:%S` "restart" $appcmdline
fi
sleep 1
done
可以存为 /usr/local/bin/supervised_run.sh
通过运行
supervised_run.sh sleep 5
可以看到每5-6秒钟会输出一次restart sleep 5,因为sleep每5秒自动退出,然后supervised_run.sh检测到sleep 5没在执行,于是重新执行sleep 5