next up previous contents
Next: nice Up: Prozeßbehandlung Previous: Vordergrund - Hintergrund

kill

Mittels der PID läßt sich ein Prozeß auch beenden. Dabei gibt es verschiedene Stufen des kill Signals.

Ein Auszug aus der manpage

    -1     -1      (super-user broadcast to all processes, or user
                    broadcast to user's processes)
     0      0       (sh(1) only, signals all members of process group)
     2      INT     (interrupt)
     3      QUIT    (quit)
     6      ABRT    (abort)
     9      KILL    (non-catchable, non-ignorable kill)
     14     ALRM    (alarm clock)
     15     TERM    (software termination signal)

Dabei sollte man immer mit einem "harmlosenSSignal wie 15 anfangen, um dem Prozeß noch Zeit zu geben evtl. benötigte Daten wegzuschreiben und sonstige Aufräumarbeiten zu verrichten. (Umgekehrt sollte man sich bei sauberer Programmierung um die Behandlung von Signalen kümmern.)

kill -9 beendet einen Prozeß sofort und zuverlässig.

Viele Programme schreiben ihre PID in eine Datei /var/run/programmname.pid damit läßt sich die PID leicht bestimmen und so der Prozeß gezielt beenden, bzw. Statusinformationen zum Prozeß erfragen. So funktioniert z.B. das Beenden einer Wählverbindung durch ein TERM Signal an den ppp Prozeß, der die Verbindung aufgebaut hat. Dieser erhält das TERM Signal, legt auf, schreibt noch was ins logfile und beendet sich dann selbst.

Das Kommando dazu lautet:kill `cat /var/run/ppp0.pid`. Man beachte die Anführungszeichen um das cat-Kommando.

Möchte man selber eine derartige Datei erzeugen, so kann man die Spezialvariable $$ verwenden, die die PID des jeweiligen Scripts enthält. Diese Variable kann man auch zur Erzeugung eindeutiger temporärer Dateinamen verwenden. $0 enthält dabei den Namen des Scripts.

TMP_NAME=/tmp/$0.$$

echo Ein eindeutiger Dateiname >> $TMP_NAME

Es ist zu beachten, daß auch das Beenden eines Prozesses an den Benutzer des Prozesses gebunden ist. Sie können also nicht einem anderen Benutzer auf der gleichen Maschine den Editor wegschießen.

Eine ganz nette Oberfläche für das kill-Kommando gibt es unter http://www.cs.unm.edu/tilde dlchao/flake/doom/http://www.cs.unm.edu/ dlchao/flake/doom/, da wird das kill-Kommando auf einmal richtig anschaulich.

Will man nicht die PID ermitteln, so gibt es da Kommando killall, das Prozeße anhand des Namens umbringt, dabei kann man noch eine Sicherheitsabfrage mit -i einbauen.

Mittels fuser [device] kann man ermittelen, welche Prozesse gerade auf device zugreifen.


next up previous contents
Next: nice Up: Prozeßbehandlung Previous: Vordergrund - Hintergrund
Matthias Kabel
2000-01-23