supervisor是python写的进程管理工具,supervisor能够批量对进程执行启动,停止,重启等操作,有效提高了运维效率。注意supervisor只能管理前台进程,supervisor会自动将该进程转为守护进程。
- 安装
pip install supervisor
- 配置
echo_supervisord_conf > /etc/supervisord.conf
mkdir /etc/supervisord.d
打开/etc/supervisord.conf文件,增加以下两行:
[include]
files = /etc/supervisord.d/*.conf
假设你的应用名为myapp
touch /etc/supervisord.d/myapp.conf
打开改文件,写入如下配置:
[program:myapp]
command=XXX ; start command of myapp
autostart=true ; 启动supervisord时是否启动myapp
autorestart=true ; myapp异常退出之后是否重启myapp
startsecs= ; 启动5秒之后未异常退出,即当做启动成功
startretries= ; 异常退出之后重试次数
redirect_stderr = true ; 将stderr输出重定向到stdout
stdout_logfile=/the/path/to/logfile ; 将stdout重定向到文件
stdout_logfile_maxbytes = 20MB ; 日志文件超出20MB, 进行滚动
stdout_logfile_backups = ; 日志文件备份数
stopasgroup=true ; stop myapp时,将myapp子进程也停止
killasgroup=true ; kill myapp时,将myapp子进程也杀死
- 启动supervisor: supervisord -c /etc/supervisord.conf
- 使用supervisor shell
supervisorctl -c /etc/supervisord.conf
>status # 显示被管理进程的状态
>start myapp # 启动myapp
>stop myapp # 停止myapp
>restart myapp # 重启myapp