Vous devez enregistrer le PID du processus d'arrière-plan au moment où vous le démarrez :
foo &
FOO_PID=$!
# do other stuff
kill $FOO_PID
Vous ne pouvez pas utiliser le contrôle des tâches, car il s'agit d'une fonctionnalité interactive et liée à un terminal de contrôle. Un script n'aura pas nécessairement de terminal attaché, donc le contrôle des tâches ne sera pas nécessairement disponible.
Vous pouvez utiliser le jobs -l
commande pour accéder à un travail particulierL
^Z
[1]+ Stopped guard
my_mac:workspace r$ jobs -l
[1]+ 46841 Suspended: 18 guard
Dans ce cas, 46841 est le PID.
À partir du help jobs
:
-l Indique l'ID du groupe de processus et le répertoire de travail des travaux.
jobs -p
est une autre option qui affiche uniquement les PID.
$$
est le pid du script courant$!
est le pid du dernier processus d'arrière-plan
Voici un exemple de transcription d'une session bash (%1
fait référence au nombre ordinal de processus d'arrière-plan vu à partir de jobs
):
$ echo $$
3748
$ sleep 100 &
[1] 192
$ echo $!
192
$ kill %1
[1]+ Terminated sleep 100