Womit ist das Linux-System eigentlich gerade beschäftigt? Welche Programme und Prozesse laufen im Hintergrund? Welche Anwendung greift auf das CD-ROM-Laufwerk zu? Und wie beenden Sie einen Prozess mit Nachdruck, wenn dieser freiwillig nicht gehen will? Antworten auf diese und weitere Fragen bieten die Kommandos, die dieser Artikel vorstellt.
Prozesse mit Ps auflisten
Mit dem Programm Ps geben Sie eine Liste der laufenden Prozesse aus. Ohne weitere Angaben präsentiert das Kommando nur die Anwendungen, welche in der aktuellen Shell laufen. Darf's ein bisschen mehr Information sein, greifen Sie zu den zahlreichen Optionen des Tools. Wie die Manpage verrät, versteht Ps sowohl Unix-Parameter mit einfachem Bindestrich, BSD-Optionen ohne Bindestrich und GNU-Optionen mit zwei Bindestrichen.
Welche Variante Sie wählen, bleibt Geschmackssache; dieser Artikel konzentriert sich auf die tippfaule Variante ohne vorangestellte Minuszeichen. Um beispielsweise alle eigenen Prozesse auszugeben, verwenden Sie die Option x (Listing 1).
Listing 1
$ ps x PID TTY STAT TIME COMMAND 3705 ? Ss 0:00 /bin/sh /usr/bin/startkde 3763 ? Ss 0:00 /usr/bin/ssh-agent /usr/bin/startkde 3789 ? Ss 0:00 kdeinit Running… 3792 ? S 0:00 kdeinit: dcopserver --nosid 3794 ? S 0:00 kdeinit: klauncher …
Gut sortiert präsentiert das Ps-Kommando, welche Tasks unter Ihrer eigenen Benutzerkennung laufen. Dabei sortiert der Befehl die Ausgabe nach Process Identifier, die eindeutige Prozessnummer (PID), Nummer des Terminals oder der virtuellen Konsole (TTY), Zustand des Prozesses (STAT), verbrauchte Rechenzeit (TIME) und Befehlsname inklusive Parameter (COMMAND).
Im Feld STAT zeigt Ps meistens einen der folgenden Zustände an:
S: schlafend, dass heißt, das Programm hat gerade nichts zu tunR: laufendD: Prozess ist tot und nicht mehr wiederbelebbarZ: Zombie, d. h. ein Prozess, der zwar abgelaufen ist, seinen Rückgabestatus aber nicht richtig übergeben hat
Wer nicht nur die eigenen Prozesse, sondern auch die Tasks der anderen Benutzer auf dem System sehen möchte, verwendet die Option a. Da in dieser langen Liste nicht zu erkennen ist, unter welcher Benutzerkennung die einzelnen Programme laufen, setzen Sie zusätzlich u ein, um den Eigentümer und die Rechenzeit und den Speicheranteil anzuzeigen (Listing 2).
Listing 2
$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1504 512 ? S 08:31 0:00 init [2] … huhnix 3705 0.0 0.2 2748 1296 ? Ss 08:33 0:00 /bin/sh /usr/bin/startkde …
Verwandtschaftsverhältnisse
Prozesse starten in einigen Fällen ihrerseits weitere Prozesse; der erste Prozess, der nach dem Booten losrennt, heißt immer init. Von diesem Elternprozess (parent process) ausgehend, leiten sich weitere Tasks ab; die Kinder (child processes) dürfen wiederum Prozesse starten und so weiter. Den Grad der Verwandtschaft zeigt Ihnen die Option l an; Ps blendet nun eine weitere Spalte mit der Parent Process ID (PPID) ein.
Noch übersichtlicher fällt die Struktur mit dem Parameter f, welcher die Hierarchie als ASCII-Bild malt. Alternativ greifen Sie zum Programm Pstree, welches ebenfalls die Verwandtschaftsverhältnisse darstellt (Abbildung 1).



