Da jeder Prozess (bis auf den allerersten) in einem Linux-System einen Parent hat, ist es manchmal übersichtlicher, wenn alle Prozesse in einer Baumstruktur dargestellt werden. Es wird Sie freuen zu hören, dass es ein Befehlszeilenprogramm namens pstree gibt - das einen Baum von Prozessen anzeigt.
In diesem Tutorial werden wir die Grundlagen des Befehls pstree anhand einiger leicht verständlicher Beispiele besprechen. Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele hier auf einem Ubuntu 16.04 LTS-Rechner getestet wurden.
Linux-pstree-Befehl
Wie bereits eingangs erwähnt, zeigt der Befehl pstree einen Baum von Prozessen an. Es folgt die Syntax:
pstree [options]
Und hier ist, was die Manpage des Tools darüber sagt:
pstree shows running processes as a tree. The tree is rooted at either
pid or init if pid is omitted. If a user name is specified, all
process trees rooted at processes owned by that user are shown.
pstree visually merges identical branches by putting them in square
brackets and prefixing them with the repetition count, e.g.
init-+-getty
|-getty
|-getty
`-getty
becomes
init---4*[getty]
Child threads of a process are found under the parent process and are
shown with the process name in curly braces, e.g.
icecast2---13*[{icecast2}]
If pstree is called as pstree.x11 then it will prompt the user at the
end of the line to press return and will not return until that has hap?
pened. This is useful for when pstree is run in a xterminal.
Certain kernel or mount parameters, such as the hidepid option for
procfs, will hide information for some processes. In these situations
pstree will attempt to build the tree without this information, showing
process names as question marks.
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine gute Vorstellung davon vermitteln sollen, wie der Befehl pstree funktioniert:
Q1. Wie verwende ich den Befehl pstree?
Die grundlegende Verwendung ist einfach:Alles, was Sie tun müssen, ist, 'pstree' ohne jegliche Option auszuführen.
pstree
Sie können also sehen, wie pstree prozessbezogene Informationen in der Ausgabe erzeugt.
Q2. Wie bringt man pstree dazu, auch Befehlszeilenargumente in die Ausgabe aufzunehmen?
Dies kann mit der Befehlszeilenoption -a erfolgen.
pstree -a
So können Sie sehen, dass der Befehl pstree jetzt auch Befehlszeilenoptionen für einige Prozesse anzeigt.
Q3. Wie kann man pstree zwingen, identische Teilbäume in der Ausgabe zu erweitern?
Standardmäßig führt der Befehl pstree identische Zweige zusammen, indem er sie in eckige Klammern setzt und ihnen die Anzahl der Wiederholungen voranstellt. Etwa so:
Wenn Sie möchten, können Sie das Tool jedoch dazu zwingen, identische Bäume zu erweitern, was Sie mit der Befehlszeilenoption -c tun können.
pstree -c
Q4. Wie bringt man pstree dazu, einen bestimmten Prozess hervorzuheben?
Falls Sie möchten, dass das Tool einen bestimmten Prozess in der Ausgabe hervorhebt, verwenden Sie die Befehlszeilenoption -H.
pstree -H [PID]
Wobei PID die ID des Prozesses ist, den Sie hervorheben möchten. Zum Beispiel habe ich den Firefox-Prozess auf meinem System mit dem folgenden Befehl hervorgehoben:
pstree -H 3124
So können Sie sehen, dass der Name 'firefox' im Vergleich zu anderen Namen leicht hervorgehoben ist.
Q5. Wie kann pstree Prozessgruppen-IDs in der Ausgabe anzeigen?
Verwenden Sie dazu die Befehlszeilenoption -g.
pstree -g
Sie können also sehen, dass Prozessgruppen-IDs als Dezimalzahlen in Klammern nach jedem Prozessnamen angezeigt werden.
Q6. Wie erstellt man pstree-Sortierprozesse basierend auf PIDs?
Standardmäßig sortiert pstree Prozesse mit demselben Vorfahren nach Namen. Wenn Sie jedoch möchten, können Sie pstree auch Prozesse nach PIDs sortieren lassen, was Sie mit der Befehlszeilenoption -n tun können.
pstree -n
Beachten Sie, dass diese Art der Sortierung auch als numerische Sortierung bekannt ist.
Q7. Wie kann man pstree dazu bringen, den Prozessbaum benutzerspezifisch anzuzeigen?
Wenn Sie möchten, dass pstree alle Prozessbäume anzeigt, die in Prozessen verwurzelt sind, die einem bestimmten Benutzer gehören, müssen Sie lediglich den Namen dieses Benutzers als Eingabe an den Befehl übergeben.
Zum Beispiel
pstree himanshu
In diesem Fall wurde also folgende Ausgabe auf meinem System erzeugt:
Q8. Wie schränke ich Pstree auf einen bestimmten Prozess ein?
Wenn Sie möchten, dass pstree nur die Eltern- und Kindinformationen für einen bestimmten Prozess anzeigt, verwenden Sie die Option -s.
pstree -s [PID]
Zum Beispiel wollte ich die Pstree-Ausgabe nur auf den Firefox-Prozess auf meinem System beschränken, also habe ich den folgenden Befehl ausgeführt:
pstree -s 3124
Und hier ist die Ausgabe, die das Tool anzeigt:
Schlussfolgerung
Abhängig von der Art Ihrer Arbeit kann der Befehl pstree eine große Hilfe sein. Hier, in diesem Tutorial, haben wir einige wichtige Befehlszeilenoptionen besprochen, die dieses Tool bietet. Weitere Informationen finden Sie auf der Manpage.