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)

参考文献

相关推荐
且从容.12 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道13 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
且从容.16 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落17 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨17 小时前
WSL2的安装与使用
linux·wsl
微小的鱼17 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng18 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮18 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky1 天前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默1 天前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu