进程控制系统:Supervisor
笔记参考:https://juejin.cn/post/6844903745587773448
周末用了一个运维工具,叫Supervisor,感觉还挺好用的,今天来记录一下怎么使用这个工具。
supervisor是一个unix-like环境下的进程控制系统,用户可以通过它来监控进程,使用起来非常简单。
安装/启动
安装
pip:
pip install supervisorcentos:
yum install supervisor如果centos提示no urls in mirrorlist,执行下面的命令:
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*ubuntu或者debian:
sudo apt update && sudo apt install supervisor查看是否安装成功
> sudo systemctl status supervisor● supervisor.service - Supervisor process control system for UNIX Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-11-17 22:56:48 UTC; 5min ago创建配置文件(仅pip安装需要手动生成)
安装完成后通过echo_supervisord_conf 命令输出一个初始化的配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf启动
supervisord查看状态:
supervisorctl status常用命令
reread ;重新加载配置文件update ;将配置文件里新增的子进程加入进程组,如果设置了autostart=true则会启动新新增的子进程status ;查看所有进程状态status <name> ;查看指定进程状态start all; 启动所有子进程start <name>; 启动指定子进程restart all; 重启所有子进程restart <name>; 重启指定子进程stop all; 停止所有子进程stop <name>; 停止指定子进程reload ;重启supervisordadd <name>; 添加子进程到进程组reomve <name>; 从进程组移除子进程,需要先stop。注意:移除后,需要使用reread和update才能重新运行该进程测试
通过一个小demo程序来测试supervisor
在/etc/supervisord.d目录新建一个test.ini
[program:test];命令路径command=/usr/bin/date;进程数量numprocs=1;执行目录directory=/root;如果是true,当supervisor启动时,程序将会自动启动autostart=false;自动重启autorestart=true;当退出码是0,2时,执行重启,默认值0,2exitcodes=0,2;启动尝试次数,默认3次startretries=3;默认是1,这里因为测试的是date命令,非常快就退出了,所以改成0startsecs=0;日志redirect_stderr=truestdout_logfile=/root/info.logstdout_logfile_maxbytes=1MBstdout_logfile_backups=10stdout_capture_maxbytes=1MBstderr_logfile=/root/error.logstderr_logfile_maxbytes=1MBstderr_logfile_backups=10stderr_capture_maxbytes=1MB刷新配置:
> supervisorctl rereadtest: available> supervisorctl statustest STOPPED Not started启动test
> supervisorctl start testtest: started> tail info.log Mon Nov 27 12:48:47 CST 2023Mon Nov 27 12:48:47 CST 2023Mon Nov 27 12:48:47 CST 2023Mon Nov 27 12:48:47 CST 2023Mon Nov 27 12:48:47 CST 2023Mon Nov 27 12:48:47 CST 2023Mon Nov 27 12:48:47 CST 2023Mon Nov 27 12:48:47 CST 2023Mon Nov 27 12:48:47 CST 2023Mon Nov 27 12:48:47 CST 2023web控制台
修改配置(默认是注释的)
[inet_http_server] ; inet (TCP) server disabled by defaultport=127.0.0.1:9001 ; ip_address:port specifier, *:port for all ifaceusername=user ; default is no username (open server)password=123 ; default is no password (open server)