| 特性维度 |
systemd (系统服务管理器) |
Supervisor (专用进程管理工具) |
| 核心机制 |
集成于系统,通过服务单元(.service)文件配置重启策略 |
作为独立的监控进程,将其管理的应用作为子进程启动和监控 |
| 主要优势 |
系统级集成,性能开销小,可统一管理依赖关系、资源限制等 |
配置简单,提供专用命令行(supervisorctl)和Web界面进行管理 |
| 适用场景 |
管理系统的核心服务或需要随系统启动的常驻服务 |
管理用户空间的应用(如Web服务器、队列处理器) |
配置在 /etc/supervisor/conf.d/*.conf
样例配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| [group:mygroup] programs= myapp1, myapp2
[program:myapp1] command=/home/mzdai/workspace/myapp1 param1 param2 directory=/home/mzdai/workspace/ user=mzdai autostart=true autorestart=true stdout_logfile=/var/log/supervisor/GTNotifListener-92808451.log stderr_logfile=/var/log/supervisor/GTNotifListener-92808451.log environment= LD_LIBRARY_PATH="/home/mzdai/workspace/lib" [program:myapp2] command=/home/mzdai/workspace/myapp2 param1 param2 autostart=false autorestart=unexpected
[program:myapp3] command=/home/mzdai/workspace/myapp3 param1 param2 autostart=false autorestart=false
|
更新配置后需要通过下面命令生效
1 2
| supervisorctl reread supervisorctl update
|
查看状态
启动一个不属于组的program
1
| supervisorctl start myapp3
|
启动一个隶属于组的program
1
| supervisorctl start mygroup:myapp1
|
启动一组program
1
| supervisorctl start mygroup:*
|
停止一组program
1
| supervisorctl stop mygroup:*
|