supervisor使用相关问题
简介
Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为后台守护进程,异常退出时能自动重启
常见问题
使用supervisor添加子配置文件时, 执行以下命令
1 | supervisorctl reread |
后提示No config updates to processes
产生原因可能如下
- 配置文件没写对, 导致运行不起来
- centos路径没引用对
解决办法
1.正确路径
通常我们加载子配置文件是会将配置文件supervisord.conf的最后一部分修改为
1 | [include] |
这里有几个细节(都是我遇到过的并且踩坑了的)
files后面最好不要加空格, 例如
files = /root/supervisor/conf.d/*.ini这种有可能会找不着路径有的如果是
*.conf结尾的可能也用不起, 最好还是改成ini结尾的最开始这部分是注释着的, 最后取消注释的时候记得把
[include]这个也取消注释了,这也是我踩过的坑:sweat:
2.正确配置文件
关于配置文件的修改可以参考如下:
1 | [program:test] |
其实只需要配置3个参数,其它不用管:
command=sh /root/supervisord/test.sh: 我们的子进程启动命令;stdout_logfile=/tmp/supervisor.stdout.log: 日志;program:test:进程名为test,如果进程哪一天想停止启动等,需要进程名;
最后
修改完后再次输入supervisorctl reread 应该就会获取到子进程配置文件并且启动进程了
再不行就输入一下 supervisorctl reload (重启 supervisord), supervisorctl update (改动某配置文件,重新加载)什么的就大功告成啦:ok_hand:
附录
supervisorctl 常用命令
新增某配置文件,重新加载
1 | supervisorctl reread |
改动某配置文件,重新加载
1 | supervisorctl update |
重启 supervisord
1 | supervisorctl reload |
查看所有进程状态
1 | supervisorctl status |
查看指定进程状态
1 | supervisorctl status <name> |
启动所有子进程
1 | supervisorctl start all |
启动指定子进程
1 | supervisorctl start <name> |
重启所有子进程
1 | supervisorctl restart all |
重启指定子进程
1 | supervisorctl restart <name> |
停止所有子进程
1 | supervisorctl stop all |
停止指定子进程
1 | supervisorctl stop <name> |
添加子进程到进程组
1 | supervisorctl add <name> |
从进程组移除子进程,需要先stop。注意:移除后,需要使用reread和update才能重新运行该进程
1 | supervisorctl reomve <name |