В любом случае, чтобы получить идентификатор процессов, созданных Supervisord?

Мне нужен идентификатор процесса процессов, созданных с помощью супервизора для использования в script. Процессы, порожденные supervisord, не создают файлы .pid в своих каталогах по умолчанию, если вообще.

Как получить идентификатор процесса дочернего процесса супервизора?

Ответ 1

Начиная с версии 3 администратора, вы можете использовать команду supervisorctl pid <name> для вывода списка pid управляемых процессов:

supervisorctl pid programname

Используйте supervisorctl pid all, чтобы получить разделенный новой строкой список pid всех управляемых процессов.

Для более старых версий супервизора вы застряли с supervisord status, но с небольшим массажем awk, sed и paste вы можете извлечь эти pid, чтобы они были приемлемы в качестве входных данных для других команд:

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

перечисляет все pids запущенных программ в виде списка через пробел. Замените echo командой kill -HUP, чтобы отправить им все сигналы SIGHUP, например.

Ответ 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 записывает идентификатор супервизора.

Вы можете получить дочерний процесс по ps -ef|grep ${fatherProcess}