兄弟们不知道是否有被要求24小时不允许关机的痛苦经历,有时半夜正在做着美梦却被客户或老板抓起来一通臭骂,服务器怎么回事down了,网站访问不了... 唉,真是痛不欲生呀!
经历过N次折磨后,我下定决心要改变这种情况,想一下,也许我可以写个crontab来监控程序的运行情况,如果服务停止或发生了不可修复的错误时,自动重启服务器,这样我就不用担心半夜被人抓起来骂了。
说动手就动手,虽说我linux/unix脚本不是很熟,但我想应该也难不到我,左瞧瞧右看看,拼出了一个脚本,给大家参考下,大家可以修改下路径与端口适应自己的程序:
然后在crontab中定时执行此脚本,就可以了!嘿... 这下闹心的电话少多了,当然不要忘记定时去看下日志哦!
本人原创文章,转载请注明出处!
经历过N次折磨后,我下定决心要改变这种情况,想一下,也许我可以写个crontab来监控程序的运行情况,如果服务停止或发生了不可修复的错误时,自动重启服务器,这样我就不用担心半夜被人抓起来骂了。
说动手就动手,虽说我linux/unix脚本不是很熟,但我想应该也难不到我,左瞧瞧右看看,拼出了一个脚本,给大家参考下,大家可以修改下路径与端口适应自己的程序:
#查找当前工作日志文件,判断是否发生不可修复的错误,若有则重启
LOG=`ls /workdir/server-*.log -lrt |tail -1`
ERROR_NUM=`cat $LOG | grep java.lang.OutOfMemoryError | wc -l`
if [ $ERROR_NUM -ne 0 ];then
echo "found $ERROR_NUM times at $LOG"
kill -9 `netstat -anp|grep :::8080 | awk '{print substr($7,1,index($7,"/java")-1)}'`
cd /workdir;exec startserver.sh
exit
fi
#检查当前服务是否还在运行,若已停止,则重新启动
PROCESS_NUM=`netstat -anp|grep :::8080 | awk '{print substr($7,1,index($7,"/java")-1)}' | wc -l`
if [ $PROCESS_NUM -eq 0 ];
then
cd /workdir;exec startserver.sh
fi
然后在crontab中定时执行此脚本,就可以了!嘿... 这下闹心的电话少多了,当然不要忘记定时去看下日志哦!
本人原创文章,转载请注明出处!