[Linux] バッチファイルの親プロセスを特定する

Linuxで プロセスIDは $$ で取得できる

なので、
ps -f | grep $$ とすれば親プロセスIDが取得できる
そこで、
ps -f | grep $$ |  awk '{if ($2 == PROCINFO["ppid"] ) {print $3 } }'
を実行すればいいわけだ

ところが、
tt=`ps -f | grep $$ |  awk '{if ($2 == PROCINFO["ppid"] ) {print $3 } }'`
を実行すると、プロセスの入れ子が1つ増えてしまい、親プロセスIDではなく自プロセスIDが
$ttに代入されてしまう。

そこで、awkの変数代入機能を使う
tt=`ps -f | grep $$ | awk  '{if ($2 == num ) {print $3 } }' num=$$`
これで、親PIDを$ttに代入できた

バッチファイルに続けて、
ps -f | grep $tt > /var/log/pid.log
を記述すれば、実行すると親プロセスが何なのか特定できるわけだ

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です