Devi salvare il PID del processo in background nel momento in cui lo avvii:
foo &
FOO_PID=$!
# do other stuff
kill $FOO_PID
Non è possibile utilizzare il controllo del lavoro, poiché si tratta di una funzionalità interattiva e legata a un terminale di controllo. Uno script non avrà necessariamente un terminale collegato, quindi il controllo del lavoro non sarà necessariamente disponibile.
Puoi usare il jobs -l
comando per raggiungere un particolare jobL
^Z
[1]+ Stopped guard
my_mac:workspace r$ jobs -l
[1]+ 46841 Suspended: 18 guard
In questo caso, 46841 è il PID.
Da help jobs
:
-l Riporta l'ID del gruppo di processi e la directory di lavoro dei lavori.
jobs -p
è un'altra opzione che mostra solo i PID.
$$
è il pid dello script corrente$!
è il pid dell'ultimo processo in background
Ecco una trascrizione di esempio da una sessione bash (%1
si riferisce al numero ordinale del processo in background visto da jobs
):
$ echo $$
3748
$ sleep 100 &
[1] 192
$ echo $!
192
$ kill %1
[1]+ Terminated sleep 100