佛山电商网站建设,外贸wordpress,制作海报,怎么学做电商然后自己创业【初始问题】supervisor创建一个守护进程#xff0c;老是提示启动失败 【结论】进程执行后#xff0c;短时间就断开了
Ⅰ 问题分析 supervisor开启进程守护失败了#xff0c;查看下进程执行记录#xff0c;显示这个进程的指令执行报错了
接下来#xff0c;查看下superv…【初始问题】supervisor创建一个守护进程老是提示启动失败 【结论】进程执行后短时间就断开了
Ⅰ 问题分析 supervisor开启进程守护失败了查看下进程执行记录显示这个进程的指令执行报错了
接下来查看下supervisor服务运行状况,可以看到有相关报错信息 “Exited too quickly”
/www/server/panel/pyenv/bin/supervisorctl status提示说“执行太快了”该进程直接就退出但是设置了autorestarttrue为啥没有重启进程 看官方解释说到自动重启只能在监控的进程在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,levellogging.DEBUG,format%(asctime)s %(levelname)s: %(message)s
)def main():logging.info(Script started)try:while True:print(111111, flushTrue)logging.debug(Running...)time.sleep(5)except KeyboardInterrupt:logging.info(Script stopped)if __name__ __main__:main()
效果
解决办法2调整配置参数startsecs
在配置文件上加这个
startsecs0作用就是一启动服务器进程就进入RUNNING了只要进入了该状态这样子就可以让autorestart强制生效了 在 supervisor 配置文件中startsecs 参数用于指定进程启动后需要运行的秒数以便 supervisor 确认该进程已成功启动并进入稳定状态。如果在配置中设置 startsecs0则表示进程只要启动后立即没有异常退出 解决方案3程序前后口sleep2s
例如下面的python脚本
import timeif __name__ __main__:time.sleep(2)print(1111)time.sleep(2)参考文献
Linux下使用Supervisor管理进程 - | Cloud Strife |Ubuntu 中的进程管理工具——supervisorFATAL Exited too quickly (process log may have details)的解决方案 - 就是想学习 - 博客园etails)的解决方案 - 就是想学习 - 博客园