Wenn sie rennen
Scheint, als könnten Sie dies einfach mit kill
und der Ausgabe von tun jobs -p
.
Beispiel
$ sleep 1000 &
[1] 21952
$ sleep 1000 &
[2] 21956
$ sleep 1000 &
[3] 21960
Jetzt laufen 3 falsche Jobs.
$ jobs
[1] Running sleep 1000 &
[2]- Running sleep 1000 &
[3]+ Running sleep 1000 &
Töte sie alle so:
$ kill $(jobs -p)
[1] Terminated sleep 1000
[2]- Terminated sleep 1000
[3]+ Terminated sleep 1000
Bestätigen, dass sie alle weg sind.
$ jobs
$
Wenn sie gestoppt sind
Wenn Sie Jobs haben, die gestoppt sind und nicht ausgeführt werden, tun Sie dies stattdessen.
Beispiel
$ kill $(jobs -p)
$ jobs
[1]+ Stopped sleep 1000
[2]- Stopped sleep 1000
[3] Stopped sleep 1000
OK, das hat sie nicht getötet, aber das liegt daran, dass das Kill-Signal nicht vom Prozess selbst verarbeitet werden kann, sondern gestoppt wird. Sagen Sie dem Betriebssystem also, dass es stattdessen töten soll. Dafür -9
ist a da.
$ kill -9 $(jobs -p)
[1]+ Killed sleep 1000
[2]- Killed sleep 1000
[3] Killed sleep 1000
Das ist besser.
$ jobs
$
Wenn einige laufen und andere gestoppt werden
Wenn Sie eine gemischte Sammlung von Prozessen haben, bei denen einige gestoppt sind und andere ausgeführt werden, können Sie eine kill
erste gefolgt von a ausführen kill -9
.
$ kill $(jobs -p); sleep <time>; \
kill -18 $(jobs -p); sleep <time>; kill -9 $(jobs -p)
Verlängern Sie die Zeit geringfügig, wenn Sie mehr benötigen, damit sich Prozesse zuerst selbst stoppen können.
Signale
Weder ein HUP (-1) noch ein SIGTERM (-15) zum Töten werden erfolgreich sein. Aber wieso? Das liegt daran, dass diese Signale in dem Sinne freundlicher sind, dass sie der Anwendung sagen, dass sie sich selbst beenden soll. Da sich die Anwendung jedoch in einem gestoppten Zustand befindet, kann sie diese Signale nicht verarbeiten. Sie müssen also nur ein SIGKILL (-9) verwenden.
Sie können alle Signale sehen, kill
die mit liefern 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
Wenn Sie noch mehr über die verschiedenen Signale erfahren möchten, empfehle ich Ihnen dringend, einen Blick auf die Signal-Manpage zu werfen man 7 signal
.
+
Symbol für den ersten Prozess und ein-
Symbol für den zweiten Prozess und kein Symbol für den dritten?