Kapitel 4. Betrieb
Zurück | 4.17 `ps` | Weiter

## 4.17 `ps`

Um auf einem Debian GNU/Linux-System die vielen gleichzeitig laufenden Programme im Zaum halten zu können, muss man sich natürlich auch einen Überblick über diese verschaffen. Dazu dient unter anderem das Programm `ps`. `ps` liest die benötigten Informationen unter Linux aus dem Verzeichnis `/proc` des Dateisystems. `/proc` ist nicht tatsächlich auf einer Festplattenpartition abgelegt, sondern wird vom Kernel ständig aktualisiert und in den Verzeichnisbaum eingeblendet. Somit hat der Benutzer auf einfachste Art und Weise Zugriff auf die Informationen.

Rufen Sie `ps` einfach einmal ohne weitere Parameter in einer Shell auf. Dies sollte Ihnen in etwa folgendes Ergebnis anzeigen:

    bash-2.02$ ps
    PID TTY          TIME CMD
    3522 pts/5    00:00:00 bash
    3523 pts/5    00:00:00 ps

Ohne weitere Optionen zeigt `ps` die Prozesse der aktuellen Shell an. Zu diesem Zeitpunkt sind das die Shell selbst sowie das Programm `ps`, das ja gerade gestartet wurde. In der ersten Spalte sehen Sie die Prozess-ID (PID); diese dient dazu, ein Programm im System eindeutig zu identifizieren. `ps` verfügt über eine Vielzahl von Optionen, mit denen Sie sich detailliertere Informationen zu den laufenden Programmen ansehen können.

Eine Kurzübersicht über die verfügbaren Optionen erhalten Sie, wie bei allen GNU-Programmen, mit der Option `--help`.

    bash-2.02$ ps --help

    ********* simple selection *********  ********* selection by list *********
    -A all processes                      -C by command name
    -N negate selection                   -G by real group ID (supports names)
    -a all w/ tty except session leaders  -U by real user ID (supports names)
    -d all except session leaders         -g by session leader OR by group name
    -e all processes                      -p by process ID
    T  all processes on this terminal     -s processes in the sessions given
    a  all w/ tty, including other users  -t by tty
    g  all, even group leaders!           -u by effective user ID (supports
                                             names)
    r  only running processes             U  processes for specified users
    x  processes w/o controlling ttys     t  by tty
    *********** output format **********  *********** long options ***********
    -o,o user-defined  -f full            --Group --User --pid --cols
    -j,j job control   s  signal          --group --user --sid --rows
    -O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
    -l,l long          u  user-oriented   --sort --tty --forest --version
                       X  registers       --heading --no-heading
                        ********* misc options *********
    -V,V show version       L  list format codes  f  ASCII art forest
    -m,m show threads       S  children in sum    -y change -l format
    -n,N set namelist file  c  true command name  n  numeric WCHAN,UID
    -w,w wide output        e  show environment   -H process hierarchy

Am häufigsten werden Sie sicher Optionen wie `a`, `u`, `x` und `w` benutzen. Diese werden nach dem Kommando einfach zusammengefasst, also beispielsweise `ps auxw`.

Nun folgt das versprochene Beispiel zum Thema Pipe: Nehmen wir an, Sie benötigen die Prozess-ID eines Programms, um es mittels `kill` zu beenden. Auf einem System mit vielen Prozessen kann dies ein Problem sein. Die Lösung ist eine Kombination aus den Programmen `ps` und `grep`, die mittels einer Pipe verkettet werden. Das benötigte Kommando würde wie folgt aussehen: `ps aux|grep netscape`. `ps` mit den Optionen `aux` gibt alle laufenden Prozesse in einer ausführlichen Form aus. `grep` filtert aus der Ausgabe des Programms `ps` alle Zeilen heraus, in denen die Zeichenfolge `netscape` vorkommt. Sie sollten nun eine recht knappe Ausgabe bekommen und die gewünschte Prozess-ID leicht finden können.

Weitere Informationen zu `ps` finden Sie in der Manpage zu `ps` (`man ps`).

Zurück | Nach oben | Weiter
4.16 Pipes | Zum Anfang | 4.18 Links

© 1999-2006 Frank Ronneburg - Dieser Inhalt ist unter einem Creative Commons Namensnennung - Nicht-kommerziell - Keine Bearbeitung Lizenzvertrag lizenziert (creativecommons.org/licenses/by-nc-nd/2.0/de/legalcode).