supervisor管理进程用法详解

Supervisor是一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。

提供的高可用场景,当你的程序出现异常,例如core/内存溢出等,导致服务进程被杀死,这个时候supervisort监听到进程终止后,会自动将它重新拉起。

supervisor安装

1、通过apt-get直接安装

apt-get install supervisor

2、pip安装

pip install supervisor

3、easy_install安装

easy_install supervisor

supervisor是一个C/S架构的工具。安装完成后,会生成三个执行程序:

1)supervisortd:守护进程服务(用于接收进程管理命令)

2)supervisorctl:客户端(用于和守护进程通信,发送管理进程的指令)

3)echo_supervisord_conf:生成初始配置文件程序

supervisor配置

运行echo_supervisord_conf命令输出默认的配置项,可以如下操作将默认配置保存到文件中

echo_supervisord_conf > supervisord.conf

vim 打开编辑supervisord.conf文件,修改

[include]
files = relative/directory/*.ini

supervisor管理进程用法详解_第1张图片

[include]
files = /etc/supervisor/*.conf

supervisor管理进程用法详解_第2张图片

include选项指明包含的其他配置文件。

将编辑后的supervisord.conf文件复制到/etc/目录下

sudo cp supervisord.conf /etc/

然后在/etc目录下新建子目录supervisor(与配置文件里的选项相同),并在/etc/supervisor/中新建需要管理的配置文件xxx.conf。

[program:test_one]
command=python3 /home/dgw/Desktop/test/text.txt; 被监控的进程路径   
priority=1                    ; 数字越高,优先级越高
numprocs=1                    ; 启动几个进程
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                   ; 正常退出代码
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout


[program:test_two]
command=python3 /home/dgw/Desktop/test/text2.txt; 被监控的进程路径                             
priority=1                    ; 数字越高,优先级越高
numprocs=1                    ; 启动几个进程
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                   ; 正常退出代码
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout

注意:要对上面编辑的文件添加可操作权限:chmod +x xxx.conf

supervisor启动

supervisord -c /etc/supervisord.conf

查看 supervisord 是否在运行:

ps aux | grep supervisord

supervisorctl

        利用supervisorctl来管理supervisor。

supervisorctl

> status    # 查看程序状态
> start apscheduler  # 启动 apscheduler 单一程序
> stop toutiao:*   # 关闭 toutiao组 程序
> start toutiao:*  # 启动 toutiao组 程序
> restart toutiao:*    # 重启 toutiao组 程序
> update    # 重启配置文件修改过的程序

执行status命令时,显示如下信息说明程序运行正常:

supervisor> status
toutiao:toutiao-app RUNNING pid 32091, uptime 00:00:02

此时没有是说明没有权限,在命令前面加上sudo就可以啦!

 supervisor管理进程用法详解_第3张图片

启动一个程序进程:  【directory此时亲测不起作用】

[program:Elasticsearch]
command=/home/admin/es/elasticsearch-7.17.6/bin/elasticsearch; 被监控的进程路径   
priority=1                    ; 数字越高,优先级越高
numprocs=1                    ; 启动几个进程
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                   ; 正常退出代码
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout
stdout_logfile=logs/es/stdout.log
stderr_logfile=logs/es/strerr.log

注意容易错误的地方:

注意1:   【这种写法只是可能有问题,还要更加python程序决定】

supervisor管理进程用法详解_第4张图片

 注意2:

supervisor管理进程用法详解_第5张图片

异常报错参考链接:

supervisor出现的错误_qq_38375394的博客-CSDN博客

supervisor启动报错Unlinking stale socket /tmp/supervisor、unix:/run/supervisor/supervisor.sock no such fi_wd520521的博客-CSDN博客

你可能感兴趣的:(开发工具,服务器,linux,网络)