supervisord是一个进程管理工具,提供web页面管理,能对进程进行自动重启等操作。
优点:
– 可以将非后台运行程序后台运行
– 自动监控,重启进程
缺点:
– 不能管理后台运行程序
– 对多进程服务,不能使用kill关闭
1.安装依赖包
- yum install python-setuptools
- wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-9.0.1.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
- tar -zxvf pip-9.0.1.tar.gz
- cd pip-9.0.1
- python setup.py build
- python setup.py install
2.安装supervisor
- pip install supervisor
3.生成配置文件
- echo_supervisord_conf > /etc/supervisord.conf
4.新建自定义进程脚本目录
- mkdir /etc/supervisord.d/
5.修改supervisor配置文件/etc/supervisor.conf
- [include]
- files = /etc/supervisord.d/*.ini
6.编写一个自启脚本
- vim /etc/supervisord.d/test.ini
- [program:test]
- command=ping baidu.com ;常驻后台的命令
- autostart=true ;是否随supervisor启动
- autorestart=true ;是否在挂了之后重启,意外关闭后会重启,比如kill掉!
- startretries=3 ;启动尝试次数
- stderr_logfile=/tmp/test.err.log ;标准输出的位置
- stdout_logfile=/tmp/test.out.log ;标准错误输出的位置
7.启动supervisord服务
- supervisord -c /etc/supervisord.conf
管理命令:
- supervisorctl stop program_name # 停止某一个进程,program_name 为 [program:x] 里的 x
- supervisorctl start program_name # 启动某个进程
- supervisorctl restart program_name # 重启某个进程
- supervisorctl stop groupworker: # 结束所有属于名为 groupworker 这个分组的进程 (start,restart 同理)
- supervisorctl stop groupworker:name1 # 结束 groupworker:name1 这个进程 (start,restart 同理)
- supervisorctl stop all # 停止全部进程,注:start、restartUnlinking stale socket /tmp/supervisor.sock
- 、stop 都不会载入最新的配置文件
- supervisorctl reload # 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
- supervisorctl update # 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启