Quand ils courent
On dirait que vous pouvez le faire avec kill
et la sortie de jobs -p
.
Exemple
$ sleep 1000 &
[1] 21952
$ sleep 1000 &
[2] 21956
$ sleep 1000 &
[3] 21960
Maintenant, j'ai 3 faux emplois en cours.
$ jobs
[1] Running sleep 1000 &
[2]- Running sleep 1000 &
[3]+ Running sleep 1000 &
Tuez-les tous comme ça:
$ kill $(jobs -p)
[1] Terminated sleep 1000
[2]- Terminated sleep 1000
[3]+ Terminated sleep 1000
Confirmant qu'ils sont tous partis.
$ jobs
$
Quand ils sont arrêtés
Si vous avez des travaux arrêtés, ne les exécutez pas, faites-le à la place.
Exemple
$ kill $(jobs -p)
$ jobs
[1]+ Stopped sleep 1000
[2]- Stopped sleep 1000
[3] Stopped sleep 1000
D'accord, cela ne les a pas tués, mais c'est parce que le signal de mise à mort ne peut pas être géré par le processus lui-même, il est arrêté. Dites donc à l'OS de tuer à la place. C'est pour ça -9
.
$ kill -9 $(jobs -p)
[1]+ Killed sleep 1000
[2]- Killed sleep 1000
[3] Killed sleep 1000
C'est mieux.
$ jobs
$
Quand certains tournent et certains s'arrêtent
Si vous avez un ensemble mixte de processus où certains sont arrêtés et certains sont en cours d'exécution, vous pouvez faire une kill
première suivie d'un kill -9
.
$ kill $(jobs -p); sleep <time>; \
kill -18 $(jobs -p); sleep <time>; kill -9 $(jobs -p)
Prolongez légèrement le temps si vous avez besoin de plus pour permettre aux processus de s'arrêter en premier.
Signaux
Ni un HUP (-1) ni un SIGTERM (-15) à tuer ne réussiront. Mais pourquoi? En effet, ces signaux sont plus doux dans le sens où ils indiquent à l'application de se terminer. Mais puisque l'application est dans un état arrêté, elle ne peut pas traiter ces signaux. Donc, votre seule chose est d'utiliser un SIGKILL (-9).
Vous pouvez voir tous les signaux kill
fournis avec kill -l
.
$ kill -l | column -t
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
Si vous voulez en apprendre davantage sur les différents signaux , je vous encourage fortement l' un à jeter un oeil à la page de manuel des signaux, man 7 signal
.
+
symbole pour le premier processus et un-
symbole pour le deuxième processus et aucun symbole dans le troisième?