Linux后台进程管理利器 supervisor
Linux后台进程管理利器:supervisor
安装
/usr/local/python2.7/bin/pip2.7 install supervisor
配置
生成配置文件
/usr/local/python2.7/bin/echo_supervisord_conf > /etc/supervisord.conf
编辑supervisord.conf,在最后增加下列内容:
[program:celery]
command=python2.7 /usr/local/Rattlesnake/manage.py celery worker -l info -c20
directory=/usr/local/Rattlesnake/fds
stdout_logfile=/data/logs/celery.log
autostart=true #随supervisord启动,celery进程也启动
autorestart=true #进程挂掉后,supervisor会自动启动celery进程
redirect_stderr=true #把 stderr 重定向到 stdout,默认 false
stopsignal=QUIT #随supervisord关闭,而关闭celery
启动
/usr/local/python2.7/bin/supervisord
/usr/local/python2.7/bin/supervisorctl start celery
/usr/local/python2.7/bin/supervisorctl stop celery
使用
Supervisord安装完成后有两个可用的命令行 supervisor和 supervisorctl
supervisord:初始启动Supervisord,启动、管理配置中设置的进程: 启动supervisord: supervisord -c /etc/supervisord.conf
supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:programxxx]里配置的值。stop可替换为start/restart/reload
[program:usercenter]
directory = /home/leon/projects/usercenter ; 程序的启动目录
command = gunicorn -c gunicorn.py wsgi:app ; 启动命令,可以看出与手动在命令行启动的命令是一样的
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3
user = leon ; 用哪个用户启动
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile_maxbytes = 20MB ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log
; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere