从网上摘抄了一段监听进程的sh代码,但一直无法重启成功
这份文件是listenAndStartMyWatcher.sh
#!/bin/bash
st_dir=`echo ~`
#echo $host_dir
proc_name="MyWatcher.jar"
file_name="/usr/liyunpeng/listenAndStartMyWatcher.log"
startMyWatcherLog="/usr/liyunpeng/startMyWatcher.log"
pid=0
proc_num()
{
num=`ps -ef |grep -w ${proc_name} | grep -v grep | wc -l`
return $num
}
proc_id()
{
pid=`ps -ef |grep -w ${proc_name} | grep -v grep | awk '{print $2}'`
}
proc_num
number=$?
echo 'number='${number} >> ${file_name}
if [[ ${number} -eq 0 ]]
then
echo '进程死了'
echo 'WARNING 进程死了,开始重启====='`date`>> $file_name
/bin/bash /usr/liyunpeng/startMyWatcher.sh >> ${file_name}
#这个result会返回127 或者完全没有值返回
echo 'result='$? >> ${file_name}
if [[ ${result} -gt 0 ]]
then
echo '['`date`' warning]重启成功=====' >> $file_name
else
echo '['`date`' erro]重启失败=====' >> $file_name
fi
else
proc_id
echo '['`date`' info]别慌,他还活着pid:'${pid} >>$file_name
fi
在crontab -e里是这样的
*/1 * * * * /usr/liyunpeng/listenAndStartMyWatcher.sh
会每隔1分钟,就去检查这个进程是否在运行
这是我的startMyWatcher.sh文件内容
#!/bin/bash
jar_name=/usr/liyunpeng/MyWatcher.jar
jar_log_name=/usr/liyunpeng/MyWatcher.log
nohup java -jar ${jar_name} > ${jar_log_name} &
运行结果及报错内容
无法重启成功,事实上startMyWatcher就是一个简单的重启命令,但我不明白为什么没重启成功
我的解答思路和尝试过的方法
如上面代码所示
我想要达到的结果
能够通过定时任务去实现,这个java进程的永生