supervisor :a running process with pid = 0,程序PID为0
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.查看文件夹是否存在,或是否有权限
supervisor :a running process with pid = 0,程序PID为0的更多相关文章
- Linux process authority、the security risks in running process with high authority
catalog . Linux进程权限原理 . 最小权限原则 - 进程降权运行最佳实践 . 进程权限控制包含的攻防向量 . 进程高权限安全风险检查技术方案 1. Linux进程权限原理 我们知道,Li ...
- IIS6.0添加上.net4.0后,以前的.net系统出现“服务器应用程序不可用”的错误提示解决办法
把VS2010开发的网站.net4.0部署到Windows Server 2003的服务器上去, Windows Server 2003操作系统自带的为IIS 6.0,IIS 6.0一般只支持.NET ...
- is running beyond physical memory limits. Current usage: 2.0 GB of 2 GB physical memory used; 2.6 GB of 40 GB virtual memory used
昨天使用hadoop跑五一的数据,发现报错: Container [pid=,containerID=container_1453101066555_4130018_01_000067] GB phy ...
- delphi根据进程PID获取程序所在路径的函数(用OpenProcess取得句柄,用GetModuleFileNameEx取得程序名)
uses psapi; {根据进程PID获取程序所在路径的函数}function GetProcessExePath(PID: Cardinal): string;varpHandle: THandl ...
- Inno Setup Pascal Script to search for running process
I am currently trying to do a validation at the uninstall moment. In a Pascal script function, in In ...
- spark运行任务报错:Container [...] is running beyond physical memory limits. Current usage: 3.0 GB of 3 GB physical memory used; 5.0 GB of 6.3 GB virtual memory used. Killing container.
spark版本:1.6.0 scala版本:2.10 报错日志: Application application_1562341921664_2123 failed 2 times due to AM ...
- 搭建zookeeper出现错误:starting zookeeper... already running process 2853
今天搭建zookeeper时碰到了starting zookeeper already running process 2853这样一个错误. 上网上查了几个相似的问题都是要删除zookeeper_s ...
- CYPEESS USB3.0程序解读之---同步FIFO(slaveFifoSync)
上一篇文章解读了CYPRESS FX3的GPIO的操作过程,下面解读同步FIFO的一个例子(slaveFifoSync). *生产者,消费者. 1.首先看DMA的回调函数(cyu3dma.h): ty ...
- java: Runtime和Process调用本机程序
java: Runtime和Process调用本机程序 调用纸牌程序,Process用来销毁程序 import java.io.IOException; public class RunTimeDem ...
随机推荐
- C++中priority_queue的用法
本来想自己写一写的,但看到这个随笔,感觉要写的东西跟这个差不多,就直接附上链接. 需要注意事项: rand()函数需要引入头文件#include<cstdlib>. 自定义类型,重载ope ...
- centos中python2.7被覆盖,yum,python重新安装
参考如下,问题以解决,绝对有效 下载链接yum和python2.7网盘 链接:https://pan.baidu.com/s/1sC2crFW1I8F7zndJU0jjcA 提取码:5kia 直接参考 ...
- mysql安装笔记
MySQL-mysql 8.0.11安装教程 - Laumians - 博客园 https://www.cnblogs.com/laumians-notes/p/9069498.html mysql ...
- 使用Anaconda管理Python环境
修改镜像源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda con ...
- setTimeout与setInterval区别
setTimeout与setInterval区别 代码 setTimeout("showresponse('${rootUrl}index/movie.do','movieId')" ...
- mongoose 5.0 链接数据库 代码保存
const mongoose = require('mongoose'); const dbSrc = 'mongodb://localhost/douban-trailer' mongoose.Pr ...
- [NOI2013]快餐店 / CF835F Roads in the Kingdom (基环树)
题意 一颗基环树,选一对点使得这两个点的最短距离最大. 题解 相当于找基环树的直径,但是这个直径不是最长链,是基环树上的最短距离. 然后不会做. 然后看了ljh_2000的博客. 然后会了. 这道题最 ...
- GeoJSON与GeoBuf互相转换
GeoJSON格式通常比较大,网页需要较长时间加载,可以使用GeoBuf进行压缩. 使用GeoBuf有很多好处:结构紧凑.文件小.方便编码和解码.能适用各种GeoJSON等等. 使用: 1.安装 ge ...
- 从linq的一次优化实践看group by+Min/Max()处理数据后需要额外的其他列问题
问题简化如下: 假设有第三方的表结构如下(可能会出现完全相同的重复数据): 1.写SQL语句,查询每个学生的,userid.最高分.最高分的科目.最高分的考点.最低分.最低分科目.最低分考点(分数相同 ...
- 003_硬件基础电路_LM2596
以下内容全部从文档中获取有用信息的 链接:https://pan.baidu.com/s/1fEbtY616bJWsuaDOZ0CUjw提取码:1byu 复制这段内容后打开百度网盘手机App,操作更方 ...