Supervisor是一個進程監控程序。
滿足的需求是:我現在有一個進程需要每時每刻不斷的跑,但是這個進程又有可能由於各種原因有可能中斷。當進程中斷的時候我希望能自動重新啟動它,此時,我就需要使用到了Supervisor
先弄懂兩個命令:
supervisord : supervisor的服務器端部分,啟動supervisor就是運行這個命令
supervisorctl:啟動supervisor的命令行窗口。
需求:redis-server這個進程是運行redis的服務。我們要求這個服務能在意外停止后自動重啟。
安裝(Centos):
yum install python-setuptools
easy_install supervisor
測試是否安裝成功:
echo_supervisord_conf
創建配置文件:
echo_supervisord_conf > /etc/supervisord.conf
修改配置文件:
在supervisord.conf最后增加:
[program:redis]
command = redis-server //需要執行的命令
autostart=true //supervisor啟動的時候是否隨着同時啟動
autorestart=true //當程序跑出exit的時候,這個program會自動重啟
startsecs=3 //程序重啟時候停留在runing狀態的秒數
(更多配置說明請參考:http://supervisord.org/configuration.html)
運行命令:
supervisord //啟動supervisor
supervisorctl //打開命令行
[root@vm14211 ~]# supervisorctl
redis RUNNING pid 24068, uptime 3:41:55
ctl中: help //查看命令
ctl中: status //查看狀態
遇到的問題:
1 redis出現的不是running而是FATAL 狀態
應該要去查看log
log在/tmp/supervisord.log
2 日志中顯示:
gave up: redis entered FATAL state, too many start retries too quickly
修改redis.conf的daemonize為no
具體說明:http://xingqiba.sinaapp.com/?p=240
事實證明webdis也有這個問題,webdis要修改的是webdis.json這個配置文件
完成驗證:
1 ps aux | grep redis
[root@vm1~]# ps aux | grep redis
root 30582 0.0 0.0 9668 1584 ? S 14:12 0:00 redis-server
2 kill 30582
3
[root@vm1 ~]# ps aux | grep redis
root 30846 0.0 0.0 9668 1552 ? S 15:19 0:00 redis-server
看到這個時候pid更新了。
完成,慶祝。
----------------------
作者:yjf512(軒脈刃)
出處:http://www.cnblogs.com/yjf512/
本文版權歸yjf512和cnBlog共有,歡迎轉載,但未經作者同意必須保留此段聲明