分享一个一直在用的在linux下守护进程的脚本,非常稳定。以一个java开发的jar包为例,
假设:
jar包名为:demo-system-web.jar
守护程序存储于:/usr/local/demo
输出日志:/usr/local/demo/carefor.log
守护程序代码如下:
#!/bin/sh
while true
do
A=`ps -ef|grep demo-system-web.jar | wc -l`
if [ $A -eq 1 ];then
? ? echo $(date +%F%n%T) "Restart ?Services" >> /usr/local/demo/carefor.log
? ? nohup java -jar ?demo-system-web.jar > demo-system-web-temp.txt &
? ? sleep 30
else
? ? echo $(date +%F%n%T) "Service Running" >> /usr/local/demo/carefor.log
fi
sleep 30
done
代码说明:
#!/bin/sh ? ? ? ? ?###shell脚本标准格式
while true ? ? ? ?###无限循环
do
A=`ps -ef|grep demo-system-web.jar | wc -l`? ? ? ? ?###检查进程状态的代码
if [ $A -eq 1 ];then ? ? ? ?###判断进程是否存在
????echo $(date +%F%n%T) "Restart ?Services" >> /usr/local/demo/carefor.log ? ? ? ?###不存在先记录日志
????nohup java -jar ?demo-system-web.jar > demo-system-web-temp.txt & ? ? ? ?###再重启服务,这段代码自己根据实际启动方式写
????sleep 30 ? ? ? ?###等待30秒
else
????echo $(date +%F%n%T) "Service Running" >> /usr/local/demo/carefor.log ? ? ? ?###进程正常,记录日志即可
fi
sleep 30 ? ? ? ?###等待30秒,这个根据实际情况写
done
守护某大型服务1年后总结,效果很好,守护日志很小,一年半载的删一下即可。