開始時にバックグラウンド プロセスの PID を保存する必要があります。
foo &
FOO_PID=$!
# do other stuff
kill $FOO_PID
ジョブ制御はインタラクティブな機能であり、制御端末に関連付けられているため、使用できません。スクリプトには必ずしも端末が接続されているとは限らないため、ジョブ制御は必ずしも利用できるとは限りません。
jobs -l
を使用できます 特定のジョブに到達するコマンドL
^Z
[1]+ Stopped guard
my_mac:workspace r$ jobs -l
[1]+ 46841 Suspended: 18 guard
この場合、46841 が PID です。
help jobs
から :
-l ジョブのプロセス グループ ID と作業ディレクトリを報告します。
jobs -p
PID のみを表示する別のオプションです。
$$
現在のスクリプトの pid です$!
最後のバックグラウンド プロセスの pid です
これは、bash セッションのサンプル トランスクリプトです (%1
jobs
から見たバックグラウンド処理の序数を指す ):
$ echo $$
3748
$ sleep 100 &
[1] 192
$ echo $!
192
$ kill %1
[1]+ Terminated sleep 100