開始時にバックグラウンド プロセスの 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