1. ホーム
  2. linux

[解決済み] バックグランドプロセスのプロセスIDを取得する方法を教えてください。

2022-03-20 20:13:05

質問

シェルスクリプトからバックグラウンドプロセスを起動し、スクリプトの終了時にこのプロセスを終了させたいと考えています。

このプロセスのPIDをシェルスクリプトから取得するにはどうすればよいでしょうか。私が見る限り、変数 $! には、バックグラウンドプロセスではなく、現在のスクリプトのPIDが含まれています。

解決方法は?

バックグラウンドプロセスの起動時に、そのプロセスのPIDを保存しておく必要があります。

foo &
FOO_PID=$!
# do other stuff
kill $FOO_PID

ジョブ制御はインタラクティブな機能であり、制御するターミナルと結びついているため、使用することはできません。スクリプトは必ずしも端末が接続されているとは限らないので、ジョブ制御が使えるとは限りません。