接上一文用iptables让SSH服务对陌生人说不。还是有点担心这个学期内,nginx可能会因为系统各种原因而出现异常退出,导致Web服务暂停。所以,又来了一个方案。
#!/usr/bin/env python import os, sys, time while True: time.sleep(3) try: ret = os.popen('ps -C nginx -o pid,cmd').readlines() if len(ret) < 2: print "nginx process killed, restarting service in 3 seconds." time.sleep(3) os.system("service nginx restart") except: print "Error", sys.exc_info()[1]
设置文件可执行属性,加入到/etc/rc.local,总算放心了。
这种方法还可以监控别的进程,我相信应该有现成的监控软件,但是我觉得写个脚本更方便。
没使用vps,没这些烦恼
虚拟主机?
表示一台vps上快半年没重启了, Nginx 也是稳定运行着的.
我博客的vps,uptime也3个月了。apache2的。
原来OpenVZ进程执行久了也许会直接被Killed.
把第4~5行删除,可以使用cron会解决3秒一次的检查。
哈,有意思!cron如果发现进程还没退出,会结束那个进程然后重新运行么?
cron的时间最小粒度为分钟。如果要3秒钟的话需要写20个cron任务。
http://stackoverflow.com/questions/1034243/how-to-get-a-unix-script-to-run-every-15-seconds
比较简单的功能,就直接crontab+shell不错
的确可以用shell脚本写,只不过有时候用自己最拿手的脚本,写起来效率高点 🙂
应当將出错信息记录下来
这个重任交给你了!
对哦,怎么能记录出错信息呢?我的nginx也经常无缘无故就退出了
nginx的日志文件不能找到出错信息吗?
nginx没这么脆弱吧…自己不是有个监护进程么, 倒是apache容易倒, 动不动nginx就报500了
apache的进程模式运行似乎挺稳定的。我的博客运行了好几个月,也不会遇到问题。
我的网站一年跑apache都没遇到问题的,额~~ 不过每周日晚上都要手动重启一下vps(强迫症患者),也不知道为啥养成了习惯,难道是跟网吧老板学的?哇哈哈