在宝塔面板中使用 Supervisor 定时重启某个子进程

2021-10-26 / 0 评论 技术文章 / Mrxn

本文共计 1332 字,感谢您的耐心浏览与评论.

Supervisor.png

前言:

在使用宝塔中的 Supervisor 来监控某些指定进程的时候,会有这种场景:我们需要定时重启监控的某个脚本或者子进程,重启又能不影响其他的子进程。

Supervisor简介:

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

解决办法:

Supervisor 宝塔中的默认位置在 /www/server/panel/pyenv/bin/supervisor ,但是我们需要用到的命令行工具是 supervisorctl ,即完整路径为:/www/server/panel/pyenv/bin/supervisorctl ,其完整的帮助手册信息如下:

[[email protected] ~]# /www/server/panel/pyenv/bin/supervisorctl help

default commands (type help ):
=====================================
add    exit      open  reload  restart   start   tail   
avail  fg        pid   remove  shutdown  status  update 
clear  maintail  quit  reread  signal    stop    version

我们本次使用的时候只需要使用 restart 命令参数即可。完整的命令格式为 supervisorctl restart name;

在宝塔中,需要知道 Supervisor 的子进程的名字(上述命令格式中的 name),我们可以通过执行一次重启 all 的操作来获取:

[[email protected] ~]# /www/server/panel/pyenv/bin/supervisorctl restart all
test01:test01_00: stopped
mrxn_test:mrxn_test_00: stopped
hook_test:hook_test_00: stopped
test01:test01_00: started
mrxn_test:mrxn_test_00: started
hook_test:hook_test_00: started
这就可以拿到所有的子进程名称,拿到子进程名称后就可以单独重启了:

[[email protected] ~]# /www/server/panel/pyenv/bin/supervisorctl restart test01:test01_00
test01:test01_00: stopped
test01:test01_00: started
需要定时重启的,只需要在定时任务哪里把上面的单独重启某个进程的命令加如 shell脚本 类型的任务下的脚本内容即可。


标签: Supervisor

转载:转载请注明原文链接 - 在宝塔面板中使用 Supervisor 定时重启某个子进程


0条回应:“在宝塔面板中使用 Supervisor 定时重启某个子进程”


发表评论

{view_code_no}