Linux/Unix Bash スクリプトはどのようにして自身の PID を知るのでしょうか?

StackOverflow https://stackoverflow.com/questions/2493642

  •  21-09-2019
  •  | 
  •  

質問

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 "$!")
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top