Informationen über Prozesse

In der Liste des Verzeichnisinhaltes von /proc werden Sie viele Unterverzeichnisse mit numerischem Namen finden. Das sind Verzeichnisse, die alle Informationen über die aktuell auf dem System laufenden Prozesse enthalten:

$ ls -d /proc/[0-9]*
/proc/1/    /proc/302/  /proc/451/  /proc/496/  /proc/556/  /proc/633/
/proc/127/  /proc/317/  /proc/452/  /proc/497/  /proc/557/  /proc/718/
/proc/2/    /proc/339/  /proc/453/  /proc/5/    /proc/558/  /proc/755/
/proc/250/  /proc/385/  /proc/454/  /proc/501/  /proc/559/  /proc/760/
/proc/260/  /proc/4/    /proc/455/  /proc/504/  /proc/565/  /proc/761/
/proc/275/  /proc/402/  /proc/463/  /proc/505/  /proc/569/  /proc/769/
/proc/290/  /proc/433/  /proc/487/  /proc/509/  /proc/594/  /proc/774/
/proc/3/    /proc/450/  /proc/491/  /proc/554/  /proc/595/

Bedenken Sie, dass Ihnen als Anwender (logischerweise) nur die Informationen der von Ihnen gestarteten Prozesse zugänglich sind, nicht die der anderen Benutzer. Wechseln Sie also in den Kontext des priv. Kennzeichens root um zu sehen, welche Informationen über den Prozess 127 vorhanden sind:

$ su
Password:
$ cd /proc/127
$ ls -l
total 0-9
-r--r--r--    1 root     root            0 Dec 14 19:53 cmdline
lrwx------    1 root     root            0 Dec 14 19:53 cwd -> //
-r--------    1 root     root            0 Dec 14 19:53 environ
lrwx------    1 root     root            0 Dec 14 19:53 exe -> /usr/sbin/apmd*
dr-x------    2 root     root            0 Dec 14 19:53 fd/
pr--r--r--    1 root     root            0 Dec 14 19:53 maps|
-rw-------    1 root     root            0 Dec 14 19:53 mem
lrwx------    1 root     root            0 Dec 14 19:53 root -> //
-r--r--r--    1 root     root            0 Dec 14 19:53 stat
-r--r--r--    1 root     root            0 Dec 14 19:53 statm
-r--r--r--    1 root     root            0 Dec 14 19:53 status
$

Jedes Verzeichnis enthält die gleichen Einträge. Hier folgt eine kurze Erklärung einiger dieser Einträge:

  1. cmdline: Dies ist eine (Pseudo-)Datei, die die gesamte Befehlszeile zum Start des Prozesses enthält. Da diese Zeile nicht formatiert ist, also keine Leerfelder zwischen Programmname und Argumenten und keinen Zeilenumbruch am Ende enthält, muss man sich die Ansicht mit dem folgenden Befehl etwas aufbessern: perl -ple 's,\00, ,g' cmdline.

  2. cwd: dieser symbolische Link deutet auf das aktuelle Arbeitsverzeichnis des Prozesses (daher auch der Name des Links).

  3. environ Diese Datei enthält alle für den Prozess definierten Umgebungsvariablen, aufgelistet in der Form: VARIABLE=wert. Genau wie bei cmdline ist auch diese Ausgabe nicht formatiert. Also sollte man zur Aufbereitung der Ansicht den folgenden Befehl benutzen: perl -pl -e 's,\00,\n,g' environ.

  4. exe: ein symbolischer Link, der auf die für den laufenden Prozess benutzte Programmdatei zeigt („EXEcutable“).

  5. fd: dieses Unterverzeichnis enthält die Liste der aktuell vom Prozess geöffneten Datei-Deskriptoren (siehe weiter unten).

  6. maps: wenn Sie sich den Inhalt dieser Named Pipe anzeigen lassen (beispielsweise mit cat), können Sie die Teile des vom Prozess belegten Adressraums sehen, die aktuell in der Datei abgebildet werden. Die Felder enthalten, von links nach rechts: den Adressraum dieser Speicherabbildung, die zugeteilten Rechte, den Offset vom Start der Speicherabbildung, die Major- und Minor-Nummer (in Hexadezimal-Notation) des Gerätes auf dem die abgebildete Datei liegt, die Inode-Nummer der Datei und schließlich den Namen der Datei. Wenn das Gerät die Nummer 0 hat und weder Inode-Nummer noch Dateiname vorhanden sind, handelt es sich um ein Anonymes Mapping (siehe mmap(2)).

  7. root: dies ist ein symbolischer Link, der auf das vom Prozess benutzte Wurzelverzeichnis zeigt. Im Normalfall ist das / (siehe aber auch chroot(2)).

  8. status: diese Datei enthält verschiedene Informationen über den Prozess: den Namen der Programmdatei, den aktuellen Status, seine PID und PPID, seine echte und effektive UID und GID, seine Speicherbelegung und weitere Daten. Beachten Sie bitte, dass die bisher benutzten Dateien stat und statm nicht mehr verwendet werden. Die früher darin enthaltenen Informationen liegen jetzt alle in status.

Eine Auflistung des Verzeichnisses fd für den Prozess 127 zeigt das folgende Bild:

$ ls -l fd
total 0
lrwx------    1 root     root           64 Dec 16 22:04 0 -> /dev/console
l-wx------    1 root     root           64 Dec 16 22:04 1 -> pipe:[128]
l-wx------    1 root     root           64 Dec 16 22:04 2 -> pipe:[129]
l-wx------    1 root     root           64 Dec 16 22:04 21 -> pipe:[130]
lrwx------    1 root     root           64 Dec 16 22:04 3 -> /dev/apm_bios
lr-x------    1 root     root           64 Dec 16 22:04 7 -> pipe:[130]
lrwx------    1 root     root           64 Dec 16 22:04 9 ->
/dev/console
$

Dies ist die Liste der vom Prozess geöffneten Datei-Deskriptoren. Jeder geöffnete Deskriptor wird als symbolischer Link angezeigt, wobei der Name die Deskriptor-Nummer ist. Der Link zeigt auf die bestimmte Datei, die vom jeweiligen Deskriptor geöffnet wurde[25]. Beachten Sie die Zugriffsrechte der Links: hier ist der einzige Ort, wo sie einen Sinn ergeben. Sie entsprechen den Rechten, mit denen die dem Deskriptor entsprechende Datei geöffnet wurde.



[25] Erinnern Sie sich daran, was im Kapitel „Umleitungen und Pipes“ beschrieben wurde, dann wissen Sie, was die Deskriptoren 0, 1 und 2 bedeuten.