supervisor服务“Exited too quickly“解决方案

【初始问题】supervisor创建一个守护进程,老是提示启动失败

【结论】进程执行后,短时间就断开了

Ⅰ 问题分析

  supervisor开启进程守护失败了,查看下进程执行记录,显示这个进程的指令执行报错了

接下来,查看下supervisor服务运行状况,可以看到有相关报错信息 "Exited too quickly"

复制代码
/www/server/panel/pyenv/bin/supervisorctl status

  提示说"执行太快了",该进程直接就退出,但是设置了autorestart=true,为啥没有重启进程?

看官方解释,说到"自动重启只能在监控的进程在RUNNING 的状态下才有效"

附带官网链接:http://supervisord.org/configuration.html

看到这里,直接可以开始搭建测试环境了

先科普下Supervisor 服务

  一款基于Python的进程管理工具,用来监控可持续运行进程 的状态,当进程意外退出时,Supervisor监听到进程异常退出时,会自动重新启动。
监控的进程要求:进程可长期运行

什么情况下,守护进程会无法开启?

  执行脚本/进程短时间结束,或者报错了,并没有进入Running状态,Supervisor就无法进行重启进程

Ⅱ 场景复现

创建一个python脚本

复制代码
 print(111111)

套到bt上,启动下,直接复现到

Ⅲ 解决方案

解决办法1:修改脚本,使其可一直运行

将python脚本,修改成无限循环的

复制代码
import time
import logging

# 配置日志
logging.basicConfig(
    filename='/www/server/panel/plugin/supervisor/log/test1.log',
    level=logging.DEBUG,
    format='%(asctime)s %(levelname)s: %(message)s'
)

def main():
    logging.info("Script started")
    try:
        while True:
            print(111111, flush=True)
            logging.debug("Running...")
            time.sleep(5)
    except KeyboardInterrupt:
        logging.info("Script stopped")

if __name__ == "__main__":
    main()

效果

解决办法2:调整配置参数startsecs

在配置文件上加这个

复制代码
startsecs=0

  作用就是一启动服务器进程就进入RUNNING 了,只要进入了该状态,这样子就可以让autorestart 强制生效了

  在 supervisor 配置文件中,startsecs 参数用于指定进程启动后需要运行的秒数,以便 supervisor 确认该进程已成功启动并进入稳定状态。如果在配置中设置 startsecs=0,则表示进程只要启动后立即没有异常退出

解决方案3:程序前后口,sleep2s

例如下面的python脚本

复制代码
import time

if __name__ == "__main__":
    time.sleep(2)
    print(1111)
    time.sleep(2)

参考文献

相关推荐
夜听莺儿鸣8 小时前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP9 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
向成科技9 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
Fcy64810 小时前
Linux下 进程间关系与守护进程
linux·运维·服务器·守护进程
码农小韩11 小时前
Linux驱动理论(二)——Linux字符设备驱动
linux·嵌入式软件开发·linux操作系统·linux应用开发·linux驱动理论
well061211 小时前
Linux粘滞位与Makefile机制深度解析
linux·运维·服务器
再写一行代码就下班11 小时前
linux sh脚本在windows修改导致无法使用解决方式
java·linux·centos
额额额对了11 小时前
SPI通信
linux·c语言·汇编·单片机·嵌入式硬件·arm
子木HAPPY阳VIP11 小时前
Ubuntu 关闭防火墙操作步骤
linux·运维·ubuntu
王振超wzc12 小时前
嵌入式开发环境搭建--WM软件安装,Ubuntu操作系统安装
linux·运维·ubuntu