[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
を記述すれば、実行すると親プロセスが何なのか特定できるわけだ
Comments