web-dev-qa-db-ja.com

とにかくSupervisordによって作成されたプロセスのIDを取得するには?

スクリプトで使用するには、supervisordを使用して作成されたプロセスのプロセスIDが必要です。スーパーバイザーによって生成されたプロセスは、デフォルトのディレクトリに.pidファイルを作成しません。

監視対象の子プロセスのプロセスIDを取得するにはどうすればよいですか?

20
user1561108

スーパーバイザーバージョン3以降では、supervisorctl pid <name>コマンドを使用して、管理対象プロセスのpidsを一覧表示できます。

supervisorctl pid programname

supervisorctl pid allを使用して、すべての管理対象プロセスのpidsの改行で区切られたリストを取得します。

古い監視対象バージョンの場合、supervisord statusで立ち往生していますが、awksed、およびpasteのマッサージを少し行うと、これらのpidを抽出して、他のコマンドへの入力として受け入れることができます。

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

実行中のプログラムのすべてのpidをスペースで区切られたリストとしてリストします。たとえば、echokill -HUPコマンドに置き換えて、すべてのSIGHUPシグナルを送信します。

17
Martijn Pieters

これで、次のことができます。

Sudo supervisorctl pid all
Sudo supervisorctl pid myprogramname
12
Seán Hayes

システムcentos7

コマンド:

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

ファイル/tmp/supervisord.pidは、監視対象IDを記録します。

ps -ef|grep ${fatherProcess}で子プロセスを取得できます

0
kougazhang