zoukankan      html  css  js  c++  java
  • 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 = 1        ;number of processes copies to start
    autostart = true    ;在 supervisord 启动的时候也自动启动
    autorestart = true    ;程序异常退出后自动重启
    startretries = 10    ;启动失败自动重试次数,默认是 3
    startsecs = 10        ;启动 10 秒后没有异常退出,就当作已经正常启动了
    stopsignal = KILL    ;干掉进程的信号,默认为TERM
    redirect_stderr=true    ;把 stderr 重定向到 stdout,默认 false
    exitcodes = 0,2        ;进程退出码,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: 500 Internal Server Error>: file: /usr/lib/python2.6/site-packages/supervisor-3.1.3-py2.6.egg/supervisor/xmlrpc.py line: 470

    再查看程序就变成了pid=0。但是,没有什么停止的方法,Neo君就杀了进程(如果有什么好的停止方法请告知)。

    建立文件夹,在启动脚本里加入了建立logs目录的代码。可以参考

    if [ ! -e "$base_home/logs" ] ; then
            mkdir "$base_home/logs"
    fi

     

    四:总结

    supervisor 使用出现程序PID为0 的时候,应该是文件权限的问题。

    1.启动时注意报错内容,看看是哪个文件

    2.查看文件夹是否存在,或是否有权限

  • 相关阅读:
    Software Solutions CACHE COHERENCE AND THE MESI PROTOCOL
    CACHE COHERENCE AND THE MESI PROTOCOL
    Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
    Organization SYMMETRIC MULTIPROCESSORS
    PARALLEL PROCESSING
    1分钟内发送差评邮件
    Secure Digital
    SYMMETRIC MULTIPROCESSORS
    A Taxonomy of Parallel Processor Architectures
    parallelism
  • 原文地址:https://www.cnblogs.com/LordNeo/p/8135959.html
Copyright © 2011-2022 走看看