11.4 kill
Gelegentlich können sich Proramme daneben benehmen und Sie müssen sie wieder auf den richtigen Weg bringen. Das Programm für diese Art der Administration wird kill(1) genannt und kann zur Manipulation von Prozessen auf verschiedene Weise genutzt werden. Der offensichtlichste Einsatzbereich für kill ist das "killen" eines Prozesses. Sie müssen dies tun wenn Ihnen ein Programm durchgeht und viele Systemressourcen verbraucht oder wenn Sie es einfach nur loshaben wollen.
Um einen Prozess abzubrechen müssen Sie seine PID oder seinen Namen kennen. Um die PID zu bekommen verwenden Sie den ps Befehl der im letzten Abschnitt diskutiert wurde. Um zum Beispiel Prozess 4747 abzubrechen würden Sie folgendes tun:
% kill 4747
Beachten Sie das Sie der Besitzer des Prozesses sein müssen um ihn abzubrechen. Dies ist ein Sicherheitsfeature. Wenn Sie die Erlaubnis hätten Prozesse von allen anderen Benutzern abzubrechen wäre es möglich das Sie allerlei bösartiges tun. Natürlich kann root alle Prozesse auf dem System abbrechen.
Es gibt eine weitere Variante von kill, die killall(1) genannt wird. Dieses Programm macht genau was es sagt: Es bricht alle laufenden Prozesse, die einen bestimmten Namen haben, ab. Wenn Sie alle laufenden vim Prozesse abbrechen wollten könnten Sie den folgenden Befehl eingeben:
% killall vim
Jeder vim Prozess, den Sie laufen haben, wird sterben. Wenn Sie dies als root machen würden Sie alle vim Prozesse von allen Benutzern abbrechen. Dies ergibt einen interessanten Weg jeden vom System zu kicken (inklusive Ihnen selbst):
# killall bash
Manchmal schafft es ein normaler Aufruf von kill nicht diese Aufgabe zu erledigen. Einige Prozesse werden nicht abgebrochen mit kill. Sie werden etwas mächtigeres nutzen müssen. Wenn dieses nervtötende PID 4747 nicht auf Ihre Abbruchanfrage reagiert, dann könnten Sie folgendes tun:
% kill -9 4747
Dies wird ziemlich sicher dafür sorgen das der Prozess 4747 stirbt. Sie können das gleiche mit killall machen. Dieser Befehl sendet ein anderes Signal zum Prozess. Ein normales kill sendet ein SIGTERM (terminate) Signal zum Prozess, welches ihm mitteilt das er das womit er beschäftigt ist fertigstellen, aufräumen und beenden soll. kill -9 sendet ein SIGKILL (kill) Signal zum Prozess welches ihn umgehend verwirft. Der Prozess kann nicht aufräumen und manchmal können böse Dinge, wie korrupte Daten, durch Abbrechen eines Prozesses mit SIGKILL, auftreten. Es gibt eine ganze Liste von Signalen die Ihnen zur Verfügung stehen. Sie können eine Auflistung der Signale durch Tippen des folgenden erhalten:
% kill -l 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 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
Für kill muss die Zahl verwendet werden, während der Name ohne das vorangestellte "SIG" mit killall genutzt werden kann. Hier ist ein weiteres Beispiel:
% killall -KILL vim
Ein abschließender Einsatzzweck von kill ist das Neustarten eines Prozesses. Senden von SIGHUP wird dafür sorgen das die meisten Prozesse ihre Konfigurationsdateien neu einlesen. Dies ist besonders hilfreich um, nach dem Editiren von Konfigurationsdateien, den Systemprozessen zu sagen das Sie selbige neu einlesen sollen.