Anda perlu menyimpan PID dari proses latar belakang saat Anda memulainya:
foo &
FOO_PID=$!
# do other stuff
kill $FOO_PID
Anda tidak dapat menggunakan kontrol pekerjaan, karena itu adalah fitur interaktif dan terkait dengan terminal pengontrol. Skrip belum tentu memiliki terminal yang terpasang sama sekali sehingga kontrol pekerjaan belum tentu tersedia.
Anda dapat menggunakan jobs -l
perintah untuk mendapatkan jobL tertentu
^Z
[1]+ Stopped guard
my_mac:workspace r$ jobs -l
[1]+ 46841 Suspended: 18 guard
Dalam hal ini, 46841 adalah PID.
Dari help jobs
:
-l Laporkan ID grup proses dan direktori kerja pekerjaan.
jobs -p
adalah opsi lain yang hanya menampilkan PID.
$$
adalah pid skrip saat ini$!
adalah pid dari proses latar belakang terakhir
Berikut adalah contoh transkrip dari sesi bash (%1
mengacu pada nomor urut proses latar belakang seperti yang terlihat dari jobs
):
$ echo $$
3748
$ sleep 100 &
[1] 192
$ echo $!
192
$ kill %1
[1]+ Terminated sleep 100