プロセスがシェルスクリプトを実行しているかどうかを確認するには?

プロセスがシェルスクリプトを実行しているかどうかを確認するには?

プロセスpidが与えられたらどうすればいいですか?

  • プロセスがシェルスクリプトを実行していることを確認してください。

  • それでは、スクリプトが実行されているサブプロセスをどのように取得しますか?合格pgrep -P <pid>

ありがとうございます。

ベストアンサー1

シェルスクリプトを実行すると、サブシェルと呼ばれるプロセスが開始されます。メインシェルのサブプロセスであるサブシェルは、シェルスクリプト(いわゆるbatch「バッチ」)にあるコマンドのリストを実行します。

場合によっては、シェルスクリプトを実行しているサブシェルのプロセスID(PID)を知りたい場合があります。

Bashでは、シェルスクリプトのサブシェルプロセスのPIDは、「$$」という特殊変数に格納されます。この変数は読み取り専用で、シェルスクリプトでは変更できません。たとえば、

$ cat xyz.sh
#!/bin/bash
echo "PID of this script: $$"

次の出力を提供します

PID of this script: XXXX

Bash シェルは他のいくつかの読み取り専用変数をエクスポートします。たとえば、PPIDはサブシェルの親プロセス(つまり、デフォルトシェル)のプロセスIDを格納します。 UIDは、現在スクリプトを実行しているユーザーのユーザーIDを保存します。このように(例のみ)

#!/bin/bash
echo "PID of this script: $$"
echo "PPID of this script: $PPID"
echo "UID of this script: $

これは出力を提供します

PID of this script: XXXX 
PPID of this script: XXXX 
UID of this script: XXXX

おすすめ記事