进程管理工具用于管理进程, 包括
Supervisor是一个用Python编写的进程管理工具, 个人总结了它的优点:
pip install supervisor
学校的服务器跑的还是centos5, supervisor可以正常工作; 另一个先进的进程管理工具 pm2就悲催了.
1.生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
2.修改配置文件
[include] files = /etc/supervisord.d/*.ini
3.创建进程配置
在/etc/supervisord.d/目录下创建进程配置即可(ini格式), 给个样例配置:
[program:FlaskApp] command=gunicorn -w 4 -b 127.0.0.1:5000 wsgi:app directory=/FlaskApp/ startsecs=0 stopwaitsecs=0 autostart=true autorestart=true stdout_logfile=/tmp/FlaskApp.log stderr_logfile=/tmp/FlaskApp.err
supervisor的命令分为两大部分: supervisord, supervisorctl
supervisord用于启动supervisor进程
$ supervisord $ supervisord -c /path/to/config
supervisorctl用于管理supervisor管理的进程(及ini配置的program)
$ supervisorctl start FlaskApp
$ supervisorctl stop FlaskApp
$ supervisorctl status FlaskApp # 查看状态
supervisorctl还有一个重要的作用: 重读supervisord配置(重启supervisor)
$ supervisorctl reload
supervisor还提供了权限控制
其实这个不算优点吧, 相比于pm2的界面, supervisord走的是复古极简风格.
个人觉得如果加上服务器cpu、网络监控就更好了.
在使用supervisor的时候还有意外收获:)
这几天经常使用celery进行任务管理、定时执行, 但是每次下线(ssh), celery进程就会自动关闭, 如何使
celery作为后台daemon进程运行呢?
官方文档给的方法, 反正我配了半天没弄好.
使用supervisord, 只需要配置autorestart和autostart为True即可. 样例配置:
[program:celeryd] command=celery worker -A app.celery --loglevel=info stdout_logfile=/tmp/celeryd.log stderr_logfile=/tmp/celeryd.err autostart=true autorestart=true startsecs=10 stopwaitsecs=600
进程管理是后端自动化中的重要一环, 也是粒度比较细的一环, 如何在docker容器中使用进程管理工具呢?
或是邮件反馈可也:
askdama[AT]googlegroups.com
订阅 substack 体验古早写作:
关注公众号, 持续获得相关各种嗯哼: