Kiedy biegną
Wygląda na to, że możesz to po prostu zrobić z kill
wyjściem jobs -p
.
Przykład
$ sleep 1000 &
[1] 21952
$ sleep 1000 &
[2] 21956
$ sleep 1000 &
[3] 21960
Teraz mam 3 fałszywe zadania.
$ jobs
[1] Running sleep 1000 &
[2]- Running sleep 1000 &
[3]+ Running sleep 1000 &
Zabij ich wszystkich w ten sposób:
$ kill $(jobs -p)
[1] Terminated sleep 1000
[2]- Terminated sleep 1000
[3]+ Terminated sleep 1000
Potwierdzając, że wszyscy zniknęli.
$ jobs
$
Kiedy zostaną zatrzymani
Jeśli masz zadania, które są zatrzymane, nie uruchomione, zrób to zamiast tego.
Przykład
$ kill $(jobs -p)
$ jobs
[1]+ Stopped sleep 1000
[2]- Stopped sleep 1000
[3] Stopped sleep 1000
OK, żeby ich nie zabić, ale to dlatego, że sam proces zabicia nie może obsłużyć sygnału zabicia, jest zatrzymany. Więc zamiast tego powiedz systemowi operacyjnemu zabijanie. Po to -9
jest a .
$ kill -9 $(jobs -p)
[1]+ Killed sleep 1000
[2]- Killed sleep 1000
[3] Killed sleep 1000
Tak lepiej
$ jobs
$
Gdy niektóre działają, a niektóre są zatrzymane
Jeśli masz mieszany zestaw procesów, w których niektóre są zatrzymywane, a niektóre są uruchomione, możesz zrobić kill
pierwszy, a następnie kill -9
.
$ kill $(jobs -p); sleep <time>; \
kill -18 $(jobs -p); sleep <time>; kill -9 $(jobs -p)
Nieco wydłużając czas, jeśli potrzebujesz więcej, aby procesy mogły się najpierw zatrzymać.
Sygnały
Ani HUP (-1), ani SIGTERM (-15) do zabicia się nie powiedzie. Ale dlaczego? To dlatego, że sygnały te są milsze w tym sensie, że każą aplikacji się zakończyć. Ale ponieważ aplikacja jest w stanie zatrzymania, nie może przetwarzać tych sygnałów. Jedynym oczywiście jest użycie SIGKILL (-9).
Możesz zobaczyć wszystkie sygnały, które kill
zapewnia 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
Jeśli chcesz dowiedzieć się jeszcze więcej na temat różnych sygnałów gorąco zachęcać do obejrzenia na stronie sygnały mężczyzna, man 7 signal
.
+
symbol dla pierwszego procesu i-
symbol dla drugiego procesu, a brak symbolu w trzecim?