Linux/Unix Bash スクリプトはどのようにして自身の PID を知るのでしょうか?
質問
Bash に次のようなスクリプトがあります Script.sh
, 、そしてそれ自体の PID を知る必要があります (すなわち、Script.sh 内で PID を取得する必要があります)
これを行う方法はありますか?
解決
変数 '$$' PIDが含まれています。
他のヒント
使用 $BASHPID
または $$
を参照してください。 マニュアル 2 つの違いを含む詳細については、「」を参照してください。
TL;DRTFM
$$
シェルのプロセス ID に展開されます。- で
()
サブシェルの場合、サブシェルではなく、呼び出し元のシェルのプロセス ID に展開されます。
- で
$BASHPID
現在の Bash プロセスのプロセス ID に展開されます。- で
()
サブシェルの場合、サブシェルのプロセス ID に展開されます。
- で
で示した例に加えて、 高度な Bash スクリプト ガイド 参照元 ジェフロミ, これらの例は、パイプがサブシェルを作成する方法を示しています。
$ echo $$ $BASHPID | cat -
11656 31528
$ echo $$ $BASHPID
11656 11656
$ echo $$ | while read line; do echo $line $$ $BASHPID; done
11656 11656 31497
$ while read line; do echo $line $$ $BASHPID; done <<< $$
11656 11656 11656
PIDは$$
に格納されます。
例:。それはから呼び出されたシェルのインスタンスを殺すkill -9 $$
あなたは$$
変数を使用することができます。
プロセスが子プロセスであり、$ BASHPIDが設定されていない場合は、
は、実行中のプロセスの作成した子プロセスのPPIDを照会することが可能です。それは少し醜いかもしれないが、それは動作します。例:
sleep 1 &
mypid=$(ps -o ppid= -p "$!")
所属していません StackOverflow