titel_ps.png

Kurzer Prozess

Zu Befehl: ps, pstree, lsof, kill

01.12.2003
Linux als multitasking-fähiges System besitzt eine leistungsfähige Prozessverwaltung – durch geschickte Ressourcenaufteilung scheinen Programme nicht nur gleichzeitig abzulaufen, es ist auch wesentlich leichter, sich von Prozessen zu trennen, die Probleme verursachen. Wir stellen Kommandos vor, mit denen Sie kurzen Prozess machen.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Die Prozessverwaltung von Linux sorgt dafür, dass ein MP3-Player Musik macht, während Sie gleichzeitig mit einem Browser das Internet durchforsten. Die Prozesse laufen allerdings nicht wirklich zur selben Zeit, sondern bekommen nacheinander ein bisschen Rechenzeit zur Verfügung gestellt. Die Verteilung dieser Rechenzeit passiert so schnell, dass der Eindruck entsteht, Programme liefen tatsächlich gleichzeitig.

Ein Prozess wird aber nicht nur von Anwendungen gestartet – auch Systemdienste, die im Hintergrund laufen, bekommen auf diese Art Rechenzeit zugewiesen. Wir stellen Tools vor, mit denen Sie das Prozessgeschehen im Blick behalten.

Täterprofil

Prozesse sind nicht nur hierarchisch geordnet – es gibt, ähnlich wie bei Dateien, eine Rechtebeschränkung. Prozesse "gehören" zunächst einmal dem Anwender, der sie gestartet hat. Lediglich der Administrator root darf Prozesse anderer Anwender oder Systemdienste beenden. Wer was gestartet hat, verrät das Kommando ps. Hängen Sie den Parameter x an, werden alle eigenen, gerade laufenden Prozesse angezeigt:

huhn@asteroid:~$ ps x
  PID TTY      STAT   TIME COMMAND
  500 tty2     S      0:00 -bash
[…]
 1188 pts/1    SW     0:00 -bash
14534 ?        S      0:20 SCREEN
14535 pts/8    S      0:00 /bin/bash
16397 pts/8    S      0:24 vim lsof_ps_kill.html
16403 ?        S      0:03 xterm
24551 pts/16   R      0:00 ps x

PID steht für Process Identifier. Diese Nummer ist eindeutig vergeben und wird beispielsweise benötigt, um Prozesse gezielt zu beenden. TTY zeigt die Nummer des Terminals oder der virtuellen Konsole an, wo der Prozess gestartet wurde. Die erste Konsole heißt z. B. /dev/tty1, ein xterm kann (wie im Listing zu sehen) /dev/pts/8 sein. Manche Prozesse, die vom System gestartet werden, sind keiner Konsole zugeordnet und haben daher ein ? im TTY-Feld.

Im Feld STAT dürfen mehrere Buchstaben stehen: S steht für "sleeping" (schlafend), R für "running" (läuft gerade), und SW heißt, dass der Prozess nicht nur schläft, sondern auch noch in den Swap-Speicher ausgelagert wurde. Dies passiert beispielsweise dann, wenn der Arbeitsspeicher für die aktiven Prozesse nicht ausreicht – Programme, die gerade nicht laufen, können in den Swap ausgelagert werden, um Platz für andere zu machen. Manchmal steht als Status-Flag ein Z in der Liste. Es bedeutet "Zombie" und meint einen Prozess, der zwar beendet ist, seinen Rückgabestatus aber nicht richtig übergeben konnte.

TIME verrät die verbrauchte Rechenzeit, und unter COMMAND finden Sie den Programmnamen. Wer die Ausgabe etwas ausführlicher haben möchte, verwendet weitere ps-Optionen: u sorgt für zusätzliche Informationen, z. B. Prozessrigentümer oder Rechenzeit-/Speicheranteil, und a fügt der Liste auch Prozesse anderer Anwender hinzu (Listing 1).

Listing 1

Ausgabe von "ps aux"

huhn@asteroid:~$ ps aux
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  1272   72 ?        S    Jul10   0:12 init [2]
[…]
www-data   604  0.0  0.0  2924    8 ?        S    Sep29   0:00 /usr/sbin/apache
[…]
huhn      1173  0.0  0.2  2272  128 ?        S    Jul10   0:08 /usr/bin/ssh-agen
huhn      1177  0.0  1.5  3132 1000 ?        S    Jul10   5:12 fvwm2

Das Kommando ps hat unzählige weitere Optionen, die bei der Ausgabe am Bildschirm helfen. Wer sich vor allen Dingen für die "Speicherfresser" interessiert, kann natürlich die Prozessliste sortieren (Option --sort), einfacher geht das allerdings mit top. Dieses Tool verrät Ihnen nicht nur, welcher Prozess gerade am meisten Arbeit verursacht, sondern aktualisiert die Ausgabe ständig und bleibt so auf dem neuesten Stand (Abbildung 1).

Abbildung 1: Übersichtlich – top ist top!

Den Wald vor lauter Bäumen nicht?

Jeder Prozess kann weitere Prozesse starten und wird dadurch zu einem "Elternprozess" (englisch: "parent process"). Der allererste Prozess ist dabei immer init; davon ausgehend starten "Kindprozesse" (englisch: "child process"), die wiederum weitere Prozesse hervorbringen können. Wenn ein "Kind" beendet wird, übergibt es seinen Status an den "Vater". Ist dieser zwischenzeitlich selbst beendet worden, geht die umgekehrte Erbfolge bis zurück zu init.

Die familiären Beziehungen zwischen den Prozessen verrät das ps-Kommando mit angehängter Option l ("display long format"). Im Feld PPID wird die Parent Process ID ausgegeben – logisch, dass init hier eine 0 stehen hat. Übersichtlicher ist die Ausgabe des Kommandos pstree. Der Name ist Programm: In einer Baumansicht sehen Sie, welche Prozesse voneinander abhängen (Abbildung 2).

Abbildung 2: Baum oder Wald – pstree

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Zu Befehl
    MP3s hören, in wav-Dateien umwandeln, Playlists abspielen, mit Shell-Skripten zusammenarbeiten – das alles und noch viel mehr kann das Programm mpg123. Bringen Sie Ihre Kommandozeile zum Singen!
  • Zu Befehl
    In der letzten "Zu Befehl"-Folge haben Sie erste Informationen zu Partitionen, Dateisystemen und deren Auslastung bekommen. In diesem Zusammenhang fiel auch kurz der Begriff "mounten". Mit dem Befehl mount machen Sie einen Datenträger (z. B. Festplatte, Diskette, CD usw.) für Linux verfügbar. Anders als unter DOS und Windows gibt es unter Unix/Linux keine Laufwerksbuchtaben, vielmehr wird jede Partition irgendwo unterhalb des sogenannten Root-Verzeichnisses (Wurzelverzeichnis) eingebunden. In diesem Artikel geht es um Tipps und Tricks zu mount, die den Zugriff auf Datenträger erleichtern und in einigen Fällen sogar helfen, Geld zu sparen.
  • Zu Befehl
    Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
  • Viel zu tun
    Was ist los auf dem Linux-Rechner? Verschiedene Shell-Kommandos verraten etwas über die Prozesse des Systems und helfen bei der Steuerung.
  • PIDs, Daemonen, Zombies und Jobs
    Unix-Systeme sind nichts für Zartbesaitete: In der Welt der Prozesse wird gekillt und gestorben, wimmelt es von Zombies und Daemonen.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...