スクリプトで使用するには、supervisordを使用して作成されたプロセスのプロセスIDが必要です。スーパーバイザーによって生成されたプロセスは、デフォルトのディレクトリに.pidファイルを作成しません。
監視対象の子プロセスのプロセスIDを取得するにはどうすればよいですか?
スーパーバイザーバージョン3以降では、supervisorctl pid <name>
コマンドを使用して、管理対象プロセスのpid
sを一覧表示できます。
supervisorctl pid programname
supervisorctl pid all
を使用して、すべての管理対象プロセスのpid
sの改行で区切られたリストを取得します。
古い監視対象バージョンの場合、supervisord status
で立ち往生していますが、awk
、sed
、およびpaste
のマッサージを少し行うと、これらのpid
を抽出して、他のコマンドへの入力として受け入れることができます。
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
は、監視対象IDを記録します。
ps -ef|grep ${fatherProcess}
で子プロセスを取得できます