先來介紹 supervisord。Supervisor 是一個進程監控程序。滿足的需求是:我現在有一個進程需要每時每刻不斷的跑,但是這個進程又有可能由於各種原因有可能中斷。當進程中斷的時候我希望能自動重新啓動它,此時,我就需要使用到了Supervisor。
1. 安裝
安裝很簡單:
1 |
pip
install supervisor |
就這樣就完成了安裝,在 /root/nowamagic_venv/lib/python2.7/site-packages/ 文件夾下發現了安裝目錄,我這裏是在 virtualenv 下安裝的。
2. 配置
可以用以下命令生成配置文件:
1 |
echo_supervisord_conf
> etc/supervisord.conf |
配置文件生成之後,在最末尾加上這幾行東西:
1 |
[program:hello] |
2 |
command=python
/root/nmapp2_venv/test.py --port=8888 |
3 |
directory=/root/nmapp2_venv/ |
4 |
autorestart= true |
5 |
redirect_stderr= true |
OK,完成配置。
3. 啓動 supervisor
啓動 supervisor:
1 |
supervisord |
如果報錯,請檢查報錯信息,比如:
1 |
Error:
No config file found at default paths
( |
2 |
/root/nmapp2_venv/etc/supervisord.conf, |
3 |
/root/nmapp2_venv/supervisord.conf, |
4 |
supervisord.conf, |
5 |
etc/supervisord.conf, |
6 |
/etc/supervisord.conf);
use the -c option to specify a config file at a different path |
7 |
For
help, use /root/nmapp2_venv/bin/supervisord -h |
在上面的默認目錄中,丟一個 supervisord.conf 即可。
如果報 http://localhost:9001 refused connection 錯誤,那是因爲 supervisord 沒有啓動的原因。只要放好 supervisord.conf 文件,即可解決問題。
supervisorctl start all 開啓全部服務。
如果修改了配置文件,supervisorctl reload 重啓。修改了 Supervisor 的配置,也可以用 supervisorctl reread 來重新載入,或用 supervisorctl reload 來載入新配置並重啓所有子進程。直接運行 supervisorctl 的話,可以進入命令行模式操作。