导读:Supervisor 是用 Python 开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台 daemon,并监控进程状态,异常退出时能自动...
Supervisor 是用 Python 开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台 daemon,并监控进程状态,异常退出时能自动重启。它是通过 fork/exec 的方式把这些被管理的进程当作 supervisor 的子进程来启动,这样只要在 supervisor 的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。
管理 php-fpm
[program:php-fpm]
command=bash -c "sleep 1 && sudo /usr/local/php7.4/sbin/php-fpm"
process_name=%(program_name)s
autostart=true
autorestart=true
startretries=5
exitcodes=0,2,70
stopsignal=QUIT
stopwaitsecs=2
stdout_logfile=/var/log/supervisor/php-fpm.log
ps -ef|grep php-fpm
root 23034 22175 0 23:37 ? 00:00:00 sudo /usr/local/php7.4/sbin/php-fpm
root 23043 23034 0 23:37 ? 00:00:00 php-fpm: master process (/usr/local/php7.4/etc/php-fpm.conf)
www-data 23044 23043 0 23:37 ? 00:00:00 php-fpm: pool www
www-data 23045 23043 0 23:37 ? 00:00:00 php-fpm: pool www
管理 nginx
[program:nginx]
command=bash -c "sleep 1 && sudo /usr/local/nginx/sbin/nginx -g 'daemon off;'"
process_name=%(program_name)s
autostart=true
autorestart=true
startretries=5
exitcodes=0,2,70
stopsignal=INT
stopwaitsecs=2
stdout_logfile=/var/log/supervisor/nginx.log
ps -ef|grep nginx
root 22613 22175 0 23:35 ? 00:00:00 sudo /usr/local/nginx/sbin/nginx -g daemon off;
root 22616 22613 0 23:35 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -g daemon off;
www-data 22617 22616 0 23:35 ? 00:00:00 nginx: worker process
www-data 22618 22616 0 23:35 ? 00:00:00 nginx: worker process
www-data 22619 22616 0 23:35 ? 00:00:00 nginx: worker process
www-data 22620 22616 0 23:35 ? 00:00:00 nginx: worker process
supervisorctl
supervisor> status
nginx RUNNING pid 22613, uptime 0:03:40
php-fpm RUNNING pid 23034, uptime 0:01:43
supervisor> ?
default commands (type help <topic>):
=====================================
add exit open reload restart start tail
avail fg pid remove shutdown status update
clear maintail quit reread signal stop version