posts - 225, comments - 62, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

最后用了最简答的方法,分割线下方的代码会出现在没崩溃的时候莫名其妙重启。
# ! /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
只有注册用户登录后才能发表评论。