Quando corrono
Sembra che tu possa semplicemente farlo con kill
e l'output di jobs -p
.
Esempio
$ sleep 1000 &
[1] 21952
$ sleep 1000 &
[2] 21956
$ sleep 1000 &
[3] 21960
Ora ho 3 lavori falsi in esecuzione.
$ jobs
[1] Running sleep 1000 &
[2]- Running sleep 1000 &
[3]+ Running sleep 1000 &
Uccidili tutti così:
$ kill $(jobs -p)
[1] Terminated sleep 1000
[2]- Terminated sleep 1000
[3]+ Terminated sleep 1000
Confermando che sono andati tutti.
$ jobs
$
Quando sono fermati
Se hai dei lavori che sono stati fermati, non eseguirli invece.
Esempio
$ kill $(jobs -p)
$ jobs
[1]+ Stopped sleep 1000
[2]- Stopped sleep 1000
[3] Stopped sleep 1000
OK, questo non li ha uccisi, ma è perché il segnale di uccisione non può essere gestito dal processo stesso, è interrotto. Quindi dì al sistema operativo invece di uccidere. Ecco a cosa -9
serve.
$ kill -9 $(jobs -p)
[1]+ Killed sleep 1000
[2]- Killed sleep 1000
[3] Killed sleep 1000
Va meglio.
$ jobs
$
Quando alcuni sono in esecuzione e alcuni vengono arrestati
Se hai una serie mista di processi in cui alcuni sono arrestati e alcuni sono in esecuzione, puoi fare un kill
primo seguito da a kill -9
.
$ kill $(jobs -p); sleep <time>; \
kill -18 $(jobs -p); sleep <time>; kill -9 $(jobs -p)
Estendere leggermente il tempo se è necessario altro per consentire ai processi di arrestarsi per primi.
segnali
Né un HUP (-1) o un SIGTERM (-15) da uccidere riusciranno. Ma perché? Questo perché questi segnali sono più gentili, nel senso che stanno dicendo all'applicazione di terminarsi. Tuttavia, poiché l'applicazione si trova in uno stato di arresto, non è in grado di elaborare questi segnali. Quindi il tuo unico corso è usare un SIGKILL (-9).
Puoi vedere tutti i segnali che kill
fornisce 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
Se volete saperne ancora di più sui vari segnali altamente incoraggio uno a dare un'occhiata alla pagina di segnali uomo man 7 signal
.
+
simbolo per il primo processo e un-
simbolo per il secondo processo e nessun simbolo nel terzo?