1.介绍
Supervisor
(http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。
2.Ubuntu14.04安装
sudo apt-get install supervisor
3.配置说明
[program:test] # directory = /data/test/ ;程序的启动目录 command = php test.php ;执行命令 autostart = true ;在 supervisord 启动的时候也自动启动 startsecs = 5 ;启动 5 秒后没有异常退出,就当作已经正常启动了 autorestart = true ; 程序异常退出后自动重启 startretries = 3 ; 启动失败自动重试次数,默认是 3 user = root ; 用哪个用户启动 redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB stdout_logfile_backups = 20 ; stdout 日志文件备份数 stdout_logfile = /data/logs/usercenter_stdout.log ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件) process_name ;进程名,可以使用%(program_name)s numprocs ;启动进程数%(process_num)s 从0开始 [group:testgroup] programs=test ;任何在[program:x]中定义的x
4.使用案例
[program:test]
directory = /data/test/
command= /usr/bin/php test.php %(program_name)s %(process_num)s
process_name=%(program_name)s-%(process_num)s
numprocs=5
autostart=true
autorestart=true
redirect_stderr = true
stdout_logfile_maxbytes=20MB
stdout_logfile_backups=20
stdout_logfile=/data/logs/supervisor/test.log
[group:testgroup]
programs=test
5.备注
test.php内容如下
<?php while(1) { echo rand(1000,9999) . PHP_EOL; }
6.命令
### 常用命令 查看程序状态 sudo supervisorctl status 读取新增配置(不启动) sudo supervisorctl reread 重启配置更改过的程序 sudo supervisorctl update ### 控制所有进程 sudo supervisorctl start all sudo supervisorctl stop all sudo supervisorctl restart all ### 控制指定进程 sudo supervisorctl stop testgroup:* sudo supervisorctl start testgroup:* sudo supervisorctl restart testgroup:* sudo supervisorctl stop test sudo supervisorctl start test sudo supervisorctl restart test