Von einem task_struct Perspektive haben die Threads eines Prozesses denselben Thread-Gruppenleiter (group_leader in task_struct ), während untergeordnete Prozesse einen anderen Thread-Gruppenleiter haben (jeder einzelne untergeordnete Prozess).
Diese Informationen werden dem Userspace über zugänglich gemacht die /proc Dateisystem. Sie können Eltern und Kinder verfolgen, indem Sie auf ppid schauen Feld in /proc/${pid}/stat oder .../status (dies ergibt die Eltern-PID); Sie können Threads verfolgen, indem Sie sich tgid ansehen Feld in .../status (Dies ergibt die Thread-Gruppen-ID, die auch die PID des Gruppenleiters ist). Die Threads eines Prozesses werden im /proc/${pid}/task sichtbar gemacht Verzeichnis:Jeder Thread erhält sein eigenes Unterverzeichnis. (Jeder Prozess hat mindestens einen Thread.)
In der Praxis Programme, die ihre eigenen Threads im Auge behalten möchten würden sich auf APIs verlassen, die von der von ihnen verwendeten Threading-Bibliothek bereitgestellt werden, anstatt betriebssystemspezifische Informationen zu verwenden. Typischerweise auf Unix-ähnlichen Systemen bedeutet das die Verwendung von pthreads.
-
Dies führt den
topaus Befehl mit einigen zusätzlichen Optionen:top -H -b -n 1- Die
-HDas Argument weist top an, jeden einzelnen Thread anzuzeigen. Normalerweise fasst top alle Threads unter ihrem übergeordneten Prozess zusammen. - Die
-bDas Argument lässt top im Stapelmodus laufen – die Informationen werden gesammelt, angezeigt und dann auf stdout abgelegt, anstatt in einem interaktiven Modus ausgeführt und die angezeigten Daten aktualisiert zu werden. - Mit dem
-bOption, der Benutzer muss top mitteilen, wie oft er ausgeführt werden soll, dies geschieht mit-nArgument und ein abschließendes Argument, wie oft ausgeführt werden soll.
Also
top -H -b -n 1weist das System an, „Top auszuführen, einzelne Threads anzuzeigen, im Stapelmodus auszuführen und nur einmal auszuführen“. - Die
-
Die
psBefehl meldet einen Schnappschuss der aktuell laufenden Prozesse.ps -eLfDie
-eLfArgument (kann als-e -L -fverwendet werden auch) gliedert sich wie folgt:esagtpsum alle Prozesse anzuzeigen, unabhängig davon, wem sie gehören oder in welchem Status sie sich gerade befinden – aktiv, schlafend, pausiert, auf I/O wartend usw.Lsagtpsum einzelne Threads anzuzeigen- der
fsagtpsum die Ausgabe als vollformatige Auflistung zu formatieren, und in Verbindung mitLArgument werden die Spalten NLWP (Anzahl der Threads) und LWP (Thread-ID) zur Ausgabe hinzugefügt.