【问题标题】:Anyway to get the ID of processes created by Supervisord?无论如何要获取由 Supervisord 创建的进程的 ID?
【发布时间】:2012-11-19 17:08:58
【问题描述】:

我需要使用 supervisord 创建的进程的进程 ID 以便在脚本中使用。 supervisord 生成的进程不会在其默认目录中创建 .pid 文件(如果有的话)。

如何获取 supervisord 子进程的进程 ID?

【问题讨论】:

    标签: pid supervisord child-process


    【解决方案1】:

    从 supervisor 版本 3 开始,您可以使用 supervisorctl pid <name> 命令列出托管进程的 pids:

    supervisorctl pid programname
    

    使用supervisorctl pid all 获取所有托管进程的pids 的换行符列表。

    对于较旧的 supervisord 版本,您会被 supervisord status 卡住,但有一点 awksedpaste 按摩,您可以提取这些 pids 以作为其他命令的输入:

    echo `bin/supervisorctl status | grep RUNNING | awk -F' ' '{print $4}' | sed -e 's/,$//' | paste -sd' '`
    

    会将所有正在运行的程序的 pid 列为以空格分隔的列表。例如,将echo 替换为kill -HUP 命令以向他们发送所有SIGHUP 信号。

    【讨论】:

    • 干杯 Martijn。由于您之前的回答,现在无关紧要:) 仍然无法获得组命令并重新开始工作。
    • 令人惊讶的是,没有直接的方法可以做到这一点。但这就像一个魅力
    【解决方案2】:

    您现在可以执行以下操作:

    sudo supervisorctl pid all
    sudo supervisorctl pid myprogramname
    

    【讨论】:

      【解决方案3】:

      系统centos7

      命令:

      ps -ef|grep $(cat /tmp/supervisord.pid)|grep -v grep |grep -v supervisord|awk '{print $2}'
      

      文件/tmp/supervisord.pid 记录了supervisord id。

      您可以通过ps -ef|grep ${fatherProcess}获取子进程

      【讨论】:

        猜你喜欢
        • 2017-06-19
        • 2015-11-12
        • 2021-04-13
        • 2013-07-19
        • 1970-01-01
        • 1970-01-01
        • 2017-01-21
        • 2016-03-25
        • 2021-07-03
        相关资源
        最近更新 更多