Unter Windows werden im Process Explorer alle Threads eines Prozesses angezeigt.
Gibt es ein ähnliches Befehlszeilenprogramm für Linux, das mir Details zu allen Threads anzeigt, die ein bestimmter Prozess erzeugt?
Ich denke, ich hätte mich klarer ausdrücken sollen. Ich möchte nicht die Prozesshierarchie sehen, sondern eine Liste aller Threads, die von einem bestimmten Prozess erzeugt wurden
Siehe diesen Screenshot
Wie kann dies unter Linux erreicht werden? Vielen Dank!
command-line
shell
process
Laser
quelle
quelle
Antworten:
Das klassische Tool
top
zeigt standardmäßig Prozesse an, kann jedoch angewiesen werden, Threads mit derH
Tastendruck- oder-H
Befehlszeilenoption anzuzeigen. Es gibt auch htop , das ähnlich ist,top
aber Bildlauf und Farben hat; Standardmäßig werden alle Threads angezeigt (dies kann jedoch deaktiviert werden).ps
Außerdem gibt es einige Optionen zum Anzeigen von Threads, insbesondereH
und-L
.Es gibt auch GUI-Tools, die Informationen zu Threads anzeigen können, z. B. qps (ein einfacher GUI-Wrapper
ps
) oder conky (ein Systemmonitor mit vielen Konfigurationsoptionen).Für jeden Prozess sind viele Informationen verfügbar, in
/proc/12345
denen12345
sich die Prozess-ID befindet. Informationen zu den einzelnen Threads in/proc/12345/task/67890
denen67890
ist der Kernel - Thread - ID. Dies ist , wops
,top
und andere Werkzeuge erhalten ihre Informationen.quelle
htop
scheint mir die Fäden nicht zu zeigen. Sie erwähnen denH
Schlüssel als eine Möglichkeit, zwischen dem Anzeigen und Ausblenden von Threads zu wechseln, aber er funktioniert immer noch als Hilfetaste ...h
für Hilfe, GroßbuchstabenH
zum Ein- / Ausblenden von Threads.Auflisten von Threads unter Linux
Aktuelle Antworten liefern
Ich möchte klarstellen, dass jede Antwort hier genau das angibt, was Sie angegeben haben, eine Liste aller mit einem Prozess verknüpften Threads. Dies ist möglicherweise nicht offensichtlich,
htop
da standardmäßig alle Threads auf dem System aufgelistet werden. nicht nur der Prozess abertop -H -p <pid>
besser funktioniert zum Beispiel:Als Randnotiz ist der Thread mit
-90
tatsächlich ein Echtzeit-Thread.aber
Es gibt auch eine andere Option, die wahres CLI ist
ps -e -T | grep <application name or pid>
-e
zeigt alle Prozesse-T
listet alle Threads auf|
leitet die Ausgabe an den nächsten Befehl weitergrep
Dies filtert den InhaltHier ist ein Beispiel:
Jeder von diesen hat die gleiche PID, damit Sie wissen, dass sie sich im selben Prozess befinden.
quelle
sed
anstelle von verwendengrep
, können Sie den Titel mit Trivialcode beibehalten:ps -e -T | sed -n '1p; /clementine/p;'
htop , eine verfluchte Version von top, verfügt über eine Anzeigeoption zum Anzeigen aller Threads für jeden Prozess in einer Baumansicht. Das Starten
htop
und Drücken von F5führt zu:quelle
Sie können versuchen, Folgendes zu verwenden:
Zum Beispiel:
Jeder Thread hat eine eigene PID.
quelle
Die zwei Standardwerkzeuge zum Anzeigen von Prozessinformationen sind
ps
undtop
(undhtop
welche ähnlich / verbessert sind ).Anmerkungen:
ps -m
,ps m
,ps H
...)Echtzeit-Ansicht aller oder des Prozesses mit
top -H
Sofortige Ansicht aller Prozesse und Threads mit
ps -eLf
Fädelt Informationen eines Prozesses mit
ps -T
(Hinweis: Verwenden Sie eine der Optionen
-C command
oder-p PID
, um den Prozess auszuwählen.)Führt Thread-Informationen eines Prozesses mithilfe von benutzerdefinierten Threads aus
ps
quelle
Sie können es versuchen
top -H -p <pid>
.Bitte beachten Sie jedoch auf einige Option Unix - Varianten ‚-H‘ in nicht verfügbar ist
top
Befehl.quelle
-H
; Linux verwendet GNU-Tools (einschließlichps
) und UNIX nicht. (Dies ist natürlich eine Verallgemeinerung ...)Dies soll Threads als Prozesse anzeigen. Denken Sie auch daran, dass alle Threads eines Multithreads dieselbe PID haben müssen. Linux tut dies, indem es Thread-Gruppen erstellt. Der erste Thread ist der Anführer der Gruppe und seine PID ist die tgid (Thread-Gruppen-ID) der Thread-Gruppe.
Sie können die aktuelle PID und den Status von Threads mithilfe des Dateisystems / proc ermitteln. Eine andere Möglichkeit, dies zu erreichen, besteht darin, die PID mit ps zu überprüfen und dann den folgenden Befehl auszuführen:
Dann überprüfe weitere pids / tgid von Threads und führe folgenden Befehl aus:
quelle
Hier werden die Threads aufgelistet, die Ihrem Prozess zugeordnet sind (z. B. process_id). [Wird unter Ubuntu verwendet. Es besteht die Möglichkeit, dass die Option -H auf einigen Linux-Versionen nicht verfügbar ist.]
quelle
Der obige Befehl zeigt die Anzahl der ausgeführten Threads für eine bestimmte Prozess- PID für einen Java-Prozess an
quelle
Ich habe dasselbe gesucht und konnte das folgende Bash-Skript entwickeln.
Dies ist noch in Arbeit. Ich werde es aktualisieren, wenn ich das Skript verbessere.
Ich bin kein Unix-Experte, ich bin sicher, dass ein Experte es in zwei Zeilen mit einer besseren Qualität schreiben kann, aber meine Absicht ist es, eine funktionierende Lösung für andere bereitzustellen.
Update mit Filter- und Prozessinformationen
quelle