In der man page
heißt es:
0 All processes in the current process group are signaled
Und ich habe es so versucht:
$ man kill &
[1] 15247
$
[1]+ Stopped man kill
$ kill 0
$ ps
15247 pts/41 00:00:00 man
Wie ich verstanden habe, kill 0
werden alle Prozesse im aktuellen Prozess beendet, einschließlich pid15247
. In diesem Beispiel wurde jedoch nichts unternommen. Hat jemand Ideen, wie man es benutzt?
Antworten:
Ich konnte
kill 0
auf meiner Kill Man Page (Debian) keine Notiz finden, wie sich das verhält.Aber ich habe zwei Kommentare:
(1) "Prozessgruppe" entspricht möglicherweise nicht Ihren Erwartungen. Sie können die Prozessgruppen-ID (PGID) anzeigen mit
ps -o "%p %P %r %c %a"
:Das
man
zusammen mit dem angezeigten Pager-Tool (less
) befindet sich also in derselben Prozessgruppe, unterscheidet sich jedoch von dem der Shell (in meinem Fall zsh).(2) Es gibt wahrscheinlich zwei verschiedene
kill
Befehle. Eine eingebautebash
(siehe Bash (1), Abschnitt "SHELL BUILTIN COMMANDS") und die externe/bin/kill
. Diese beiden können sich unterschiedlich verhalten! Sie können explizit angeben, welche Sie ausführen möchten, indem Siebuiltin kill
odercommand kill
anstelle von eingebenkill
. Den externen Befehl können Sie auch ausführen, indem Sie den Pfad angeben :/bin/kill
.quelle
PPID
ist die übergeordnete Prozess-ID, die häufig, aber nicht unbedingt, die Prozessgruppen-ID ist. Die richtige Spalte istPGID
, die nicht in der Standardausgabe angezeigtps
wird. Sie müssen die-o
Option verwenden, um ein benutzerdefiniertes Format zu erstellen, das es enthält.:-(
)Geben Sie Folgendes ein, um alle Ihre Prozesse zu stoppen und sich abzumelden:
Dies sendet das Signal 9, das SIGKILL-Signal, an alle Prozesse mit einer Prozessgruppen-ID, die der Prozessgruppen-ID des Absenders entspricht. Da die Shell das SIGKILL-Signal nicht ignorieren kann, stoppt dies auch die Anmeldeshell und meldet Sie ab
Dies ist das AIX-Handbuch von IBM, aber möglicherweise gilt das Konzept.
Diese Funktionalität existiert unter Linux "kill" nicht (wie ich sehen kann); aber so verhält sich "töten":
Das Töten von 0 beendet nicht die PID 0. Stattdessen ist es eine Option beim Töten, um alle Prozesse in der aktuellen Gruppe zu beenden . Mit Ihrem Befehl beenden Sie alles in der Prozessgruppen-ID (GID) der Shell, die den Befehl kill ausgegeben hat.
quelle