分享一个一直在用的在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年后总结,效果很好,守护日志很小,一年半载的删一下即可。