killall
Sie kennen das Problem von Windows: Ein Programm bleibt hängen, es "stürzt ab". Das passiert zwar relativ selten in Linux, aber es kommt vor. Vor allem Beta-Versionen, die noch nicht völlig fehlerbereinigt sind, neigen häufig dazu. Was in Linux allerdings fast nie passiert, ist, daß Sie den Rechner neu booten müssen. Sie haben die Möglichkeit, das hängende Programm zu beenden ("abzuschießen"). Dazu existieren die Befehle killall und kill. Arbeitet man auf einer X-Windows-Oberfläche, so sind im Normalfall alle Programme außer dem abgestürzten startbar. Das bedeutet, man öffnet eine Konsole und kann in dieser das hängende Programm beenden. Hat sich z.B. Netscape aufgehängt, so wird es (und alle anderen Programme, die das Wort netscape im Namen haben) durch den Befehl:
killall netscape
beendet. Nach einem solchen "unsanften" Beenden eines Prozesses existiert oft ein sog. "Lockfile". Dies steht im Beispiel von Netscape im Verzeichnis ~/.netscape und heißt schlicht lock. Falls ein Programm nach dem "Abschießen" nämlich nicht mehr gestartet werden kann (kommt bei Netscape des öfteren vor), muß zuerst dieses Lockfile gelöscht werden. Falls killall keine Auswirkung zeigt, kann die Option -9 benutzt werden, die noch unsanfter ist als der einfache Befehl.
kill
kill funktioniert wie killall, nur daß das Programm nicht mit seinem Namen eingegeben wird, sondern mit seiner Prozeßnummer, der sog. PID. Jedes Programm, jeder Befehl, der gestartet wird, sei es beim Booten oder durch den User, erhält eine individuelle Prozeßnummer. Die laufenden Prozesse werden mit dem Befehl ps angezeigt. Um alle Prozesse, die gestartet wurden, anzuzeigen, wird ps -ax ausgeführt. Will man nun wissen, welche Prozeßnummer z.B. Netscape hat, kann man nach die Ausgabe aller Prozesse durchscrollen oder elegant per grep-Befehl den Netscape-Prozeß herausfiltern. Der gesamte Befehl lautet dann:
ps auxwww | grep netscape
Je mehr ws eingegeben werden, umso länger werden die Ausgabezeilen (nützlich bei sehr langen Pfaden, die sonst abgeschnitten werden. Die Ausgabe sieht dann etwa so aus:
clemens 779 0.0 5.1 22284 1120 ? S 11:58 0:01 /opt/netscape/netscape
clemens 968 0.0 0.2 1676 78 pts/0 S 12:53 0:00 grep netscape
Zuerst steht der Benutzer, der den Prozeß gestartet hat, danach folgt schon die Prozeßnummer (PID). Wir sehen hier zwei Prozesse, da grep nach der Zeichenfolge "netscape" gesucht hat und der grep-Befehl selbst ebenfalls ein Prozeß ist, der eine Nummer erhalten hat. Zum beenden von Netscape verwenden wir nun den Befehl kill mit der PID des Prozesses, also in unserem Beispiel:
kill 11779
Auch hier kann bei hartnäckigen Fällen die Option -9 benutzt werden, also
kill -9 11779