だから、プログラムAとプログラムBと呼ばれるいくつかのPythonプログラムがあります。 「pgrep python」を使用してpidを取得すると、プログラムAとプログラムBのpidが提供されます。しかし、私はプログラムBのpidを見つける必要がありますが、プログラムAのpidは見つからないプログラムを書いています。私の計画は、プログラムが "pgrep"コンソールコマンドを実行してpidを取得することです。しかし、両方のPIDを取得し、両方のPIDの違いがわからないので(私が知っている)
それでは、プログラムAではなくプログラムBのpidを取得するにはどうすればよいですか?
ベストアンサー1
1つのオプションは、プログラムBを起動したプロセスがこれを実行した後にPIDを検索してどこかにファイルに保存できることです(たとえば、/var/run/
これらのファイルは通常含まれますX.pid
)。 1つの方法は、スクリプトからバックグラウンドでプログラムBを起動し、次のように$!
シェル変数をチェックすることです。
ProgramB &
B_PID=$!
通常、このポリシーを使用するとX.pid
ファイルが古くなる可能性があります。つまり、開始されたプロセスはX.pid
ファイルが削除されずに終了でき、PIDは他のプロセスで再利用される可能性があります。この期間中にプログラムBが起動しないと、ファイルは更新されX.pid
ないため、ファイルに保存されているPIDを持つプロセスがX.pid
存在し、そのプロセスに予想されるコマンド名があることを確認する必要があります。
別の戦略は、計画Bが始まったときに報告された主張を調査することです。この情報はあなたが利用可能であるps
か、pgrep
あなたに提供することができます。コメント作成者が述べたように、使用されたフラグpgrep
はです-f
。