22

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

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

4

3 回答 3

23

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

supervisorctl pid programname

用于supervisorctl pid all获取pid所有托管进程的以换行符分隔的列表。

对于较旧的 supervisord 版本,您可以使用supervisord status,但是使用一点awk,sedpaste按摩,您可以提取这些pids 以作为其他命令的输入:

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

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

于 2012-12-01T21:16:10.120 回答
17

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

sudo supervisorctl pid all
sudo supervisorctl pid myprogramname
于 2016-02-26T11:47:32.287 回答
0

系统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}

于 2019-03-05T23:59:06.560 回答