Der Befehl ps zeigt laufende Prozesse an. Er liefert Informationen wie Prozess-ID, Ressourcenverbrauch und den ausführenden Benutzer.

Syntax des ps-Befehls

ps [OPTIONEN]

Der Befehl unterstützt drei verschiedene Optionsstile:

  • UNIX-Stil mit Bindestrich: -e, -f
  • BSD-Stil ohne Bindestrich: aux
  • GNU-Stil mit doppeltem Bindestrich: --sort

Diese Stile lassen sich kombinieren, aber für Konsistenz empfiehlt es sich, bei einem zu bleiben.

Grundlegende Verwendung

Ohne Optionen zeigt ps nur die Prozesse der aktuellen Shell:

ps

Die Ausgabe enthält vier Spalten:

  PID TTY          TIME CMD
 1809 pts/0    00:00:00 bash
 2043 pts/0    00:00:00 ps
  • PID - Die eindeutige Prozess-ID
  • TTY - Das zugehörige Terminal
  • TIME - Die verbrauchte CPU-Zeit
  • CMD - Der ausgeführte Befehl

Alle Prozesse anzeigen

BSD-Stil mit aux

Die gebräuchlichste Variante, um alle Prozesse zu sehen:

ps aux

Die Optionen bedeuten:

  • a - Prozesse aller Benutzer anzeigen
  • u - Benutzerorientiertes Format mit Details
  • x - Auch Prozesse ohne Terminal einbeziehen (Hintergrunddienste)

Die Ausgabe umfasst elf Spalten:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.8  77616  8604 ?        Ss   19:47   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    19:47   0:00 [kthreadd]
www-data  1523  0.2  1.2 125432 12844 ?        S    19:48   0:15 nginx: worker

Die wichtigsten Spalten im Detail:

SpalteBedeutung
USERDer Benutzer, dem der Prozess gehört
%CPUAktuelle CPU-Auslastung in Prozent
%MEMSpeicherverbrauch in Prozent
VSZVirtueller Speicher in KiB
RSSTatsächlich belegter Speicher in KiB
STATProzessstatus (S=schlafend, R=laufend, Z=Zombie)

UNIX-Stil mit -ef

Die Alternative im UNIX-Stil:

ps -ef
  • -e - Alle Prozesse auswählen
  • -f - Vollständiges Ausgabeformat

Diese Variante zeigt zusätzlich die PPID (Parent Process ID), also den übergeordneten Prozess:

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 19:47 ?        00:00:01 /sbin/init
root       523     1  0 19:47 ?        00:00:00 /usr/sbin/sshd

Prozesse filtern

Prozesse eines Benutzers anzeigen

Mit der Option -u filterst du nach einem bestimmten Benutzer:

ps -f -u www-data

Prozesshierarchie darstellen

Die Option f (BSD) zeigt Eltern-Kind-Beziehungen als Baumstruktur:

ps auxf

Die Ausgabe verdeutlicht, welcher Prozess welchen gestartet hat:

root       523  0.0  0.1  12456  1892 ?        Ss   19:47   0:00 /usr/sbin/sshd
root      1842  0.0  0.2  14232  2456 ?        Ss   20:15   0:00  \_ sshd: admin
admin     1844  0.0  0.1   8756  1234 pts/0    Ss   20:15   0:00      \_ -bash

Nach Ressourcenverbrauch sortieren

Mit --sort ordnest du die Ausgabe nach beliebigen Spalten. Ein Minuszeichen vor dem Spaltennamen sortiert absteigend:

ps aux --sort=-%mem

Dieser Befehl zeigt die speicherintensivsten Prozesse zuerst. Für CPU-Auslastung:

ps aux --sort=-%cpu

Eigene Spalten auswählen

Mit der Option -o bestimmst du selbst, welche Informationen angezeigt werden:

ps -eo pid,user,comm,%mem --sort=-%mem

Dieses Beispiel zeigt nur PID, Benutzer, Befehlsname und Speicherverbrauch.

Nützliche Spaltenbezeichner:

  • pid - Prozess-ID
  • ppid - Parent-Prozess-ID
  • user - Benutzername
  • comm - Befehlsname (kurz)
  • args - Befehl mit Argumenten
  • %cpu - CPU-Auslastung
  • %mem - Speicherverbrauch
  • etime - Laufzeit seit Start

Kombination mit anderen Befehlen

Mit grep filtern

Um einen bestimmten Prozess zu finden:

ps aux | grep nginx

Beachte: Dieser Befehl findet auch sich selbst (den grep-Prozess). Um das zu vermeiden:

ps aux | grep [n]ginx

Seitenweise Ausgabe

Bei vielen Prozessen ist less hilfreich:

ps aux | less

Praktische Beispiele

Die 10 speicherintensivsten Prozesse

ps aux --sort=-%mem | head -11

Alle Prozesse eines Dienstes finden

ps aux | grep apache2

Prozess-ID eines Programms ermitteln

ps -C firefox -o pid=

Die Option -C sucht nach dem Befehlsnamen, und pid= gibt nur die PID ohne Header aus.

Zusammenfassung

Der ps-Befehl ist ein grundlegendes Werkzeug zur Prozessanalyse. Die beiden gebräuchlichsten Varianten sind ps aux (BSD-Stil) und ps -ef (UNIX-Stil). Für detaillierte Informationen zu allen Optionen steht die Manpage bereit:

man ps

Verwandte Artikel