我需要使用supervisord创建的进程的进程ID,以便在脚本中使用。由supervisord生成的进程不会在其默认目录中创建.pid文件(如果有的话)。
如何获取supervisord子进程的进程ID?
从主管版本3开始,您可以使用supervisorctl pid <name>
命令列出托管进程的pid
s:
supervisorctl pid programname
使用supervisorctl pid all
获取所有托管进程的新行分隔的pid
s列表。
对于较旧的supervisord版本,你被supervisord status
困住,但有一点awk
,sed
和paste
按摩,你可以提取那些pid
s作为其他命令的输入可接受:
echo `bin/supervisorctl status | grep RUNNING | awk -F' ' '{print $4}' | sed -e 's/,$//' | paste -sd' '`
将所有正在运行的程序的pid列为以空格分隔的列表。例如,用echo
命令替换kill -HUP
,将它们发送给所有SIGHUP
信号。
您现在可以执行以下操作:
sudo supervisorctl pid all
sudo supervisorctl pid myprogramname
系统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}
获得孩子的过程