supervisor :a running process with pid = 0,程序PID为0
2024-10-11 09:55:28
Neo君作为一只小白,今天踩到了一个supervisor的坑。
如上图所示,出现这种情况后,想把这个进程停止、或者重启,甚至stop all它还是这个样子,如下图(马赛克部分为进程名称):
一:背景
在服务器上部署几个单独跑的程序,使用supervisor进行管理。关于supervisor的安装、配置运行等,Neo君不再赘述,百度能到一大堆。这里只介绍几个我用到的觉得有用的命令。
#启动supervisor, supervisord.conf为配置文件
supervisord -c xxx/supervisord.conf #supervisord.conf 部分配置
[program:program-name]
command = /root/program-name.sh ;启动程序的脚本(位置自定义)
numprocs = ;number of processes copies to start
autostart = true ;在 supervisord 启动的时候也自动启动
autorestart = true ;程序异常退出后自动重启
startretries = ;启动失败自动重试次数,默认是
startsecs = ;启动 秒后没有异常退出,就当作已经正常启动了
stopsignal = KILL ;干掉进程的信号,默认为TERM
redirect_stderr=true ;把 stderr 重定向到 stdout,默认 false
exitcodes = , ;进程退出码,autorestart=unexpected时有用
stdout_logfile=/program-name/logs/program-name.log ;日志输出目录(可自定义) #supervisorctl 是supervisord的客户端,可以管理进程,常用命令
status # 查看程序状态
start program-name # 启动程序
stop program-name # 关闭 程序
restart program-name # 重启程序
reread # 读取有更新(增加)的配置文件,不会启动新添加的程序
update # 重启配置文件修改过的程序
二:问题:程序PID为0
替换新版本的程序的时候,再重新启动某个程序,发现出现了一开始的问题。
三:解决
可以参见github上的问题https://github.com/Supervisor/supervisor/issues/445
经过查询Neo君发现,这个问题好像是由于,文件权限引起的。Neo君在配置的时候配置了一个日志输出目录:
stdout_logfile=/program-name/logs/program-name.log ;日志输出目录(可自定义)
但是,项目新部署的时候,没有logs目录,即/program-name/ 下没有logs文件夹,然后启动的时候报了个错
supervisor>
supervisor> start program-name
error: <class 'xmlrpclib.ProtocolError'>, <ProtocolError for 127.0.0.1/RPC2: Internal Server Error>: file: /usr/lib/python2./site-packages/supervisor-3.1.-py2..egg/supervisor/xmlrpc.py line:
再查看程序就变成了pid=0。但是,没有什么停止的方法,Neo君就杀了进程(如果有什么好的停止方法请告知)。
建立文件夹,在启动脚本里加入了建立logs目录的代码。可以参考
if [ ! -e "$base_home/logs" ] ; then
mkdir "$base_home/logs"
fi
四:总结
supervisor 使用出现程序PID为0 的时候,应该是文件权限的问题。
1.启动时注意报错内容,看看是哪个文件
2.查看文件夹是否存在,或是否有权限
最新文章
- Apworks框架实战(三):单元测试与持续集成
- C++ MFC打开文件的流程
- centos 无线网卡安装,网卡rtl8188ee
- 导出带图形的数据excel表
- repo 无法连接gerrit.googlesource.com 下载工具
- freeCodeCamp:Search and Replace
- eclipse无法与手机连上的解决方案
- web服务器分析与设计(三)
- T-SQL实例 函数结果设置为列别名
- Android APK反编译具体解释(附图)
- javascript时间函数
- Flash键盘钢琴谱
- ubuntu 把终端信息输出到文本文件中的方法
- IOS应用的国际化
- 稀疏贴图 SparseTexture
- Oracle_lhr_CentOS 7.3 ECS上搭建RAC 18c+单实例DG+EMCC+DG的FSFO快速故障转移配置
- Java多线程——Condition条件
- SQL查数据库有哪些触发器,存储过程...
- generator详解
- Java 算法 概念汇总