进程管理

进程管理工具用于管理进程, 包括

  1. 启动进程(包括所有child process)
  2. 关闭进程(包括所有child process), 相比于传统kill 4、5个进程方便太多
  3. 重启进程
  4. 查看进程状态(终端输出、图形界面)
  5. 进程设置(开机自启动、故障重启、run as daemon:)

Supervisor

Supervisor是一个用Python编写的进程管理工具, 个人总结了它的优点:

1. 安装方便

pip install supervisor

2. 兼容一些比较老的系统

学校的服务器跑的还是centos5, supervisor可以正常工作; 另一个先进的进程管理工具 pm2就悲催了.

3. 配置简单

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

4.简洁的API

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

5.权限保障

supervisor还提供了权限控制
conf

6.朴素的图形界面

其实这个不算优点吧, 相比于pm2的界面, supervisord走的是复古极简风格.
supervisord pm2
个人觉得如果加上服务器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容器中使用进程管理工具呢?

::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com


订阅 substack 体验古早写作:


点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

关注公众号, 持续获得相关各种嗯哼:
zoomquiet


自怼圈/年度番新

DU22.4
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::