Supervisord是用Python实现的一款非常实用的进程管理工具,类似于monit(关于monit见我的博客:用monit监控系统关键进程),monit和supervisord的一个比较大的差异是supervisord管理的进程必须由supervisord来启动,monit可以管理已经在运行的程序;supervisord还要求管理的程序是非daemon程序,supervisord会帮你把它转成daemon程序,因此如果用supervisord来管理nginx的话,必须在nginx的配置文件里添加一行设置daemon off让nginx以非daemon方式启动。
安装方式可以采用pip安装,也可以使用easy_install或者apt-get。
使用apt-get比较简单,系统级的配置都会自动处理好
apt-get安装
apt-get install supervisor
安装完成后配置文件默认在/etc/supervisor
目录下,其中supervisord.conf
是总的配置文件conf.d
内存放每个管理进程的配置,一般配置如下
[program:dm_mysql-data2es_py]
autorestart=true ;自动启动
directory=/var/www/dmp/data-stream-program/ ;主目录
command=/usr/bin/python3.5 /var/www/dmp/data-stream-program/dm_mysql-data2es_py.py ;执行命令
stdout_logfile_maxbytes = 20MB ;日志大小
stdout_logfile_backups = 10 ;日志备份数量
stdout_logfile = /opt/logs/dm_mysql-data2es_py.log ;日志目录
因为采用apt-get方式安装所以可以使用systemctl管理spuervisor服务
systemctl status supervisor.service #查看状态
systemctl start supervisor.service #启动
systemctl stop supervisor.service #停止
systemctl restart supervisor.service #重启
至于supervisor管理的进程,可以使用supervisorctl
来管理
管理方式跟systemctl很类似
systemctl status # 查看程序状态
systemctl stop update_ip # 关闭 update_ip 程序
systemctl start update_ip # 启动 update_ip 程序
systemctl restart update_ip # 重启 update_ip 程序
systemctl reread # 读取有更新(增加)的配置文件,不会启动新添加的程序
systemctl update # 重启配置文件修改过的程序
pip安装方式参考这里https://www.jianshu.com/p/bf2b3f4dec73