supervisord进程管理

supervisorctl 是用于管理和控制 Supervisor定义的进程的命令行工具。Supervisor 是一个进程管理工具,通常用于守护常驻服务进程(如 Celery、Gunicorn、Flask、Django、Node 等)。


1. supervisorctl 命令详解

🔎1.1 查看进程状态

1
supervisorctl status

显示所有由 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
supervisorctl stop all

🔁 1.4重启进程

1
supervisorctl restart <name>

或重启全部:

1
supervisorctl restart all

🔄 1.5重新加载配置文件

1
supervisorctl reread
  • 检查 supervisord.conf 是否有新的配置文件或变更。
1
supervisorctl update
  • 根据 reread 的结果,加载新增或修改的程序。

(注意:这不会重启已运行的进程)


💬 1.6进入交互模式

1
supervisorctl

进入交互式 CLI,可以手动输入上面那些命令,如:

1
2
supervisor> status
supervisor> restart myapp

退出输入:

1
supervisor> exit

📁 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