supervisorctl
是用于管理和控制 Supervisor 中定义的进程的命令行工具。Supervisor 是一个进程管理工具,通常用于守护常驻服务进程(如 Celery、Gunicorn、Flask、Django、Node 等)。
1. supervisorctl
命令详解
🔎1.1 查看进程状态
显示所有由 Supervisor 管理的进程及其状态:
myapp RUNNING pid 1234, uptime 0:02:30
worker STOPPED exit status 1
▶ 1.2启动进程
1
| supervisorctl start <name>
|
例如:
1
| supervisorctl start myapp
|
启动名为 myapp
的进程。
⏹ 1.3停止进程
1
| supervisorctl stop <name>
|
或停止所有:
🔁 1.4重启进程
1
| supervisorctl restart <name>
|
或重启全部:
1
| supervisorctl restart all
|
🔄 1.5重新加载配置文件
- 检查
supervisord.conf
是否有新的配置文件或变更。
- 根据
reread
的结果,加载新增或修改的程序。
(注意:这不会重启已运行的进程)
💬 1.6进入交互模式
进入交互式 CLI,可以手动输入上面那些命令,如:
1 2
| supervisor> status supervisor> restart myapp
|
退出输入:
📁 2.配置文件常见路径
默认路径可能是:
/etc/supervisord.conf
/etc/supervisor/supervisord.conf
/etc/supervisor/conf.d/*.conf
(程序定义)
可以用 -c
指定自定义配置文件:
1
| supervisorctl -c /path/to/supervisord.conf status
|
3.配置文件样例
/etc/supervisor/conf.d/myapp.conf
1 2 3 4 5 6 7 8
| [program:myapp] command=/usr/bin/python3 /path/to/app.py directory=/path/to/ autostart=true autorestart=true stderr_logfile=/var/log/myapp.err.log stdout_logfile=/var/log/myapp.out.log user=www-data
|
配置后执行以下命令使其生效:
1 2 3
| supervisorctl reread supervisorctl update supervisorctl start myapp
|
/etc/supervisord.d
$ cat data_brick_be.ini
[group:data_brick_be]
programs=data_brick_be
priority=999
[program:data_brick_be]
process_name=%(program_name)s_%(process_num)02d
command=/usr/local/python3/bin/gunicorn -c gunicorn_config.py wsgi
directory=/usr/local/nginx/html/data_brick_be
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/var/log/supervisor/supervisor.data_brick_be.log