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