当前位置: 首页 > news >正文

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 timeif __name__ == "__main__":time.sleep(2)print(1111)time.sleep(2)

参考文献

  • Linux下使用Supervisor管理进程 - | Cloud Strife |
  • Ubuntu 中的进程管理工具——supervisor
  • FATAL Exited too quickly (process log may have details)的解决方案 - 就是想学习 - 博客园etails)的解决方案 - 就是想学习 - 博客园
http://www.lryc.cn/news/474731.html

相关文章:

  • 动态规划 —— 路径问题-地下城游戏
  • 沈阳乐晟睿浩科技有限公司抖音小店短视频时代的电商蓝海
  • ubuntu20.04安装ros与rosdep
  • 推理加速papers
  • 【02基础】- RabbitMQ基础
  • vue3中跨层传递provide、inject
  • Nacos-1.4.6升级2.3.2
  • 东识集中文印管理系统|DW-S408系统的主要功能
  • text-foreground讲解
  • 数字IC后端实现之Innovus Place跑完density爆涨案例分析
  • 【牛客刷题实战】二叉树遍历
  • 消息队列mq有哪些缺点?
  • 【CENet】多模态情感分析的跨模态增强网络
  • 动态代理:面向接口编程,屏蔽RPC处理过程
  • HTTP 405 Method Not Allowed:解析与解决
  • 推荐一款CAD/CAM设计辅助工具:Mastercam
  • 位运算刷题记录
  • 爬虫技术——小白入狱案例
  • vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发
  • 全新更新!Fastreport.NET 2025.1版本发布,提升报告开发体验
  • 信息学科平台系统设计与实现:Spring Boot技术手册
  • conda下jupyterlab安装问题以及交互绘图问题记录
  • 尚硅谷react教程_扩展_setState更新状态的2种写法
  • C语言编写的自动取款机模拟程序
  • 【常用数据结构】开发中常用的数据结构?
  • OCC 点云
  • 方法重写与方法重载
  • Vue3实现地球上加载柱体
  • OpenGL入门003——使用Factory设计模式简化渲染流程
  • 01_AI编程案例展示:借助AI轻松爬取海量网盘链接