Sie sind hier:

Bash-Befehl pstree

.

Bash-Befehl pstree

2010-01-16 19:19 (Kommentare: 3)

Wie man sehen kann, was der Rechner grad so treibt? Teil 4

Dieser Artikel handelt von einer speziellen Form von ps, nämlich pstree. Der Befehl zeigt eine baumartige Struktur aller laufenden Prozesse. Ich beginne gleich mal mit der Ausgabe von pstree.

helena@helena-home:~$ pstree                                                       
init─┬─NetworkManager─┬─dhclient
│ └─{NetworkManager}
├─acpid
├─amarok───14*[{amarok}]
├─atd
├─atieventsd
├─avahi-daemon───avahi-daemon
├─console-kit-dae───63*[{console-kit-dae}]
├─cron
├─cupsd
├─3*[dbus-daemon]
├─2*[dbus-launch]
├─dd
├─gconfd-2
├─6*[getty]
├─gvfs-fuse-daemo───3*[{gvfs-fuse-daemo}]
├─gvfsd
├─hald───hald-runner─┬─hald-addon-acpi
│ ├─hald-addon-cpuf
│ ├─hald-addon-inpu
│ └─4*[hald-addon-stor]
├─kaccess
├─kded4───{kded4}
├─kdeinit4─┬─firefox───13*[{firefox}]
│ ├─kio_file
│ ├─klauncher
│ ├─konqueror───{konqueror}
│ ├─ksmserver─┬─kwin
│ │ └─{ksmserver}
│ ├─kwrited
│ ├─polkit-gnome-au
│ ├─2*[python]
│ └─thunderbird-3.0───run-mozilla.sh───thunderbird-bin───14*[{thunderbir+
├─kdm─┬─Xorg
│ └─kdm───startkde─┬─gpg-agent
│ ├─kwrapper4
│ └─ssh-agent
├─kglobalaccel
├─klipper
├─kmix
├─knetworkmanager
├─knotify4
├─konsole─┬─bash───pstree
│ ├─bash───man───pager
│ └─{konsole}
├─konversation───{konversation}
├─kopete───3*[{kopete}]
├─kpackagekitsmar───{kpackagekitsmar}
├─krunner───{krunner}
├─kwalletd
├─kxkb───{kxkb}
├─modem-manager
├─nepomukserver
├─plasma-desktop───{plasma-desktop}
├─polkitd
├─pulseaudio─┬─gconf-helper
│ └─3*[{pulseaudio}]
├─rsyslogd───2*[{rsyslogd}]
├─udevd───2*[udevd]
├─upstart-udev-br
└─wpa_supplicant

Natürlich hat auch der Befehl pstree Optionen, die man ihm übergeben kann. -p ist hier besonders hervorzuheben, da es zusammen mit den Prozessnamen auch die PIDs anzeigt.

Was sieht man nun aber an diesem Baum? Die Ausgabe erinnert sehr an einen Stammbaum und das ist es im Endeffekt auch. Es ist der Stammbaum der laufenden Session (de: Sitzung). Der Baum beginnt mit dem Init-Prozess, der die PID 1 hat. Init wird vom Kernel gestartet, nachdem dieser all seine Prozesse durchgeführt hat. Zu erst liegt der Init-Prozess noch im Kernel-Space (de: Raum), wird aber nach Beendigung der Kernelroutine in den Userspace (de: Benutzerraum) verschoben und dort ausgeführt. Init ist der Elternprozess aller im Userspace ausgeführten Programme. Wird Init also mit kill 9 beendet, ist das dem Herunterfahren des Rechners gleichzusetzen. (Vgl. Linux-Gerätetreiber, Kapitel 16)

Alle folgenden Prozesse sind also Kindprozesse von Init. Kindprozesse können aber auch Elternprozesse sein. Beispielsweise kdeinit4

├─kdeinit4─┬─firefox───13*[{firefox}]
│ ├─kio_file
│ ├─klauncher
│ ├─konqueror───{konqueror}
│ ├─ksmserver─┬─kwin
│ │ └─{ksmserver}
│ ├─kwrited
│ ├─polkit-gnome-au
│ ├─2*[python]
│ └─thunderbird-3.0───run-mozilla.sh───thunderbird-bin───14*[{thunderbir+

Kdeinit4 (der Init-Prozess von KDE4) ist der Elternprzess von Firefox, wobei kdeinit4 weiterhin ein Kindprozess von Init bleibt. Firefox selbst ist aber auch ein Elternprozess, nämlich der 13 firefox-Aktion die laufen. Sie werden als 13*[{firefox}] zusammengefasst. Kdeinit 4 ist aber auch der Elternprozess von kio_file, klauncher, konquerer, ksmserver, etc.

Jeder Prozess hat nur einen Elternprozess, aber Elternprozesse können mehrere Kindprozesse haben. Pstree gibt dem User also die Möglichkeit eine genaue visuelle Übersicht der laufenden Prozesse zu gelangen und zu sehen, in welchem Bezug sie zueinanderstehen.

Vorerst endet der Artikel hier. Eigentliches Ziel war es Eltern- und Kindprozesse sehr viel genauer zu erklären, dass wird zu einem späteren Zeitpunkt folgen.

Schlagwörter von diesem Beitrag

Zurück

Einen Kommentar schreiben

Kommentar von Sabine Engelhardt | 2010-01-20

Hallo Helena,

sorry, wenn ich hier ein wenig meckern muß: ps, pstree, top und htop sind keine Befehle innerhalb der bash, sondern eigenständige Programme. Das erkennt man schon daran, daß sie eigene manpages haben. Insofern sind die Überschriften hier einfach falsch.

Gruß, Frosch

Kommentar von Helena | 2010-01-20

Hallo Frosch,

das ist doch kein Meckern. Ich bin froh über dererlei Hinweise. Vielen Dank dafür!
Ich denke, dass es sinnvoll wäre mal einen Artikel über den Unterschied zu verfassen.

Gruß Helena

Kommentar von Helena | 2010-03-23

Hallo Frosch,

so nach dem ich nun wirklich Stunden mit der Recherche verbracht habe, muss ich gestehen, dass ich diesen Artikel nicht zusammen bekomme. Die Begriffe Bashbefehl und Bashprogramm werden einfach synonym verwendet und eine strikte Trennung wird nicht vorgenommen.
Es tut mir leid, da bin ich wirklich auf voller Linie gescheitert.

Grüße Helena

zum Seitenanfang