文章目录
管理应用程序
- supervisord启动应用程序进程,作为自己的子进程,并管理子进程的整个声明周期;
- 当某个子进程退出时,supervisord会收到SIGCHLD 信号,并执行相应的操作;
- 应用程序进程必须前台方式启动,supervisord会将他们转为后台;
- 如下前台启动案例,其他案例
[program:apache2]
command=/path/to/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
redirect_stderr=true
[program:postgres]
command=/path/to/postmaster
; 注释we use the "fast" shutdown signal SIGINT
stopsignal=INT
redirect_stderr=true
- supervisord开启mysql的进程,会忽略supervisord发送的信号,需要使用pidproxy代理,
pidproxy
是安装supervisor时自动配置的一个控制脚本;
[program:mysql]
command=/usr/bin/pidproxy /var/run/mysqld/mysqld.pid /usr/bin/mysqld_safe
- 设置应用程序的环境变量
- 在开启supervisord的shell中设置,会被所有子进程继承;
- 在配置模块[supervisord]中的environment处设置;
- 在配置模块[program:x]中的environment处设置;
- 子进程的状态
-
STOPPED (0),停止状态;
-
STARTING (10),启动过程状态;
-
RUNNING (20),稳定运行状态;
-
BACKOFF (30),本次启动失败;
-
STOPPING (40),停止过程状态;
-
EXITED (100),从运行状态退出;
-
FATAL (200),指定启动次数均失败,进入无法成功启动状态,该状态无法自动重启,必须手动重启;
-
UNKNOWN (1000),未知错误;
-
活动日志与子进程日志
pending