Die Überwachung eines Linux-Systems ist eine der wichtigsten Aufgaben, die jeder Linux-Benutzer oder Systemadministrator rund um die Uhr ausführen muss, um sicherzustellen, dass das System reibungslos läuft und Engpässe vermieden werden. Linux wird mit einigen integrierten Tools geliefert, die Ihnen bei der Überwachung Ihres Systems helfen können. Einer davon ist der ps (processes status )-Befehl, der speziell die laufenden Prozesse und unter anderem mit den Prozessen verbundene Metriken wie den Prozentsatz CPU überwacht und Erinnerung Verwertung. Der Befehl ps liest das /proc-Dateisystem, das ein RAM-basiertes oder virtuelles Dateisystem ist.
In dieser Anleitung tauchen wir tiefer ein und zeigen Ihnen 20 der am häufigsten verwendeten ps-Befehle.
1) Auflistungsprozess in der Shell
Die einfachste Form des Befehls ps unter Linux listet die laufenden Prozesse in der aktuellen Shell auf. Dies kann unten veranschaulicht werden.
[[email protected] ~]$ ps PID TTY TIME CMD 1437 pts/0 00:00:00 bash 1465 pts/0 00:00:00 ps[[email protected] ~]$
Lassen Sie uns ein paar Begriffe definieren:
- PID:Dies ist die Prozess-ID.
- TTY:Dies bezieht sich auf das Terminal, das den Prozess gestartet hat und steuert.
- ZEIT:Dies ist die Zeit / Gesamtzeit, die ein Prozess gelaufen ist.
- CMD:Name des Befehls, der den Prozess gestartet hat.
2) Prozesse auflisten, die einem Terminal zugeordnet sind
Dies ähnelt dem Auflisten der Prozesse in der Shell. Führen Sie den folgenden Befehl aus, um die Prozesse aufzulisten, die dem Terminal zugeordnet sind, das Sie gerade ausführen:
[[email protected] ~]$ ps -T PID SPID TTY TIME CMD 1437 1437 pts/0 00:00:00 bash13357 13357 pts/0 00:00:00 ps[[email protected] ~]$3) Anzeige aller laufenden Prozesse auf Ihrem System
Um einen Überblick über alle laufenden Prozesse auf Ihrem Linux-System zu erhalten, verwenden Sie das -A-Flag wie gezeigt:
[[email protected] ~]$ ps -A
Alternativ können Sie auch das –e-Flag verwenden wie gezeigt. Sie erhalten immer noch ähnliche Ergebnisse.
[[email protected] ~]$ ps -e4) Ausgabe im BSD-Format anzeigen
Um die Prozesse im BSD-Format aufzulisten, führen Sie den Befehl
aus$ ps -auxLassen Sie uns den Befehl aufschlüsseln:
Das Flag -a weist ps an, alle Prozesse von allen Benutzern anzuzeigen. Dies schließt jedoch die Prozesse aus, die einem bestimmten Terminal zugeordnet sind.
Das Flag -u impliziert ein benutzerorientiertes Format. Es bietet detailliertere Informationen zu den laufenden Prozessen.
Das x-Flag listet Prozesse auf, die normalerweise beim Systemstart gestartet werden, sowie Hintergrundprozesse.
Wo:
- USER – Dies gibt den Benutzer an, der den Prozess ausführt
- PID – Dies ist die Prozess-ID des Prozesses
- %CPU – Dies ist die prozentuale CPU-Auslastung jedes Prozesses
- %MEM – Dies ist der Prozentsatz des vom Prozess belegten physischen Speichers
- VSZ – Dies ist die Größe des virtuellen Speichers jedes Prozesses in Kilobyte
- RSS – Dies ist die Größe/Menge des physischen Speichers, der von einem Prozess verwendet wird
- STAT – Dies zeigt auf den Prozesszustandscode, z. B. S (Schlafen), Z (Zombie) und R (Running)
- START – Dies ist die Zeit, zu der der Prozess gestartet wurde
5) Ausgabe im UNIX-Format anzeigen
Wenn Sie die Ausgabe im UNIX-Format anzeigen möchten, führen Sie den Befehl ps mit einer Kombination aus -ef aus Flaggen
[[email protected] ~]$ ps -ef
Das Flag -e weist den Befehl ps an, alle Prozesse aufzulisten
Das Flag -f (vollständiges Format) weist den Befehl ps an, detaillierte Informationen über die Prozesse aufzulisten.
Lassen Sie uns ein paar neue Begriffe aus dem Screenshot definieren:
- PPID:Dies bezieht sich auf die übergeordnete Prozess-ID
- C:Dies bezieht sich auf die %CPU oder den Prozentsatz der CPU-Auslastung eines Prozesses.
- STIME:Zeigt die Uhrzeit an, zu der der Befehl gestartet wurde. Dasselbe wie START
6) Ausgabe in einem benutzerdefinierten Format anzeigen
In einem benutzerdefinierten Ausgabeformat können Sie entscheiden, welche Spalten angezeigt werden sollen. Das -o-Flag legt fest, welche Spalten angezeigt werden, wenn der Befehl ps ausgeführt wird. Im Beispiel unten nur die PID und STARTEN Spalten angezeigt. Achten Sie darauf, dass die Spaltenoptionen im Befehl ps in Kleinbuchstaben übergeben werden.
[[email protected] ~]$ ps -efo pid,start PID STARTED 1437 21:55:2813632 01:41:16[[email protected] ~]$
7) Zeigt die aktuell laufenden Prozesse eines Benutzers
Manchmal möchten Sie vielleicht Prozesse herausfinden, die einem bestimmten Benutzer zugeordnet sind, also verwenden Sie dazu das -u Flag wie gezeigt“
$ ps -u Benutzer
ODER
$ ps -u uid
Um beispielsweise Prozesse anzuzeigen, die dem Benutzer „Linuxtechi“ zugeordnet sind, führen Sie den folgenden Befehl aus:
$ ps -u linuxtechi
Alternativ können Sie die uid (Benutzer-ID) des Benutzers verwenden. Sie können die Benutzer-ID abrufen, indem Sie den folgenden Befehl ausführen:
$ id Benutzer
[[email protected] ~]$ id linuxtechiuid=1000(linuxtechi) gid=1000(linuxtechi) groups=1000(linuxtechi),10(wheel)[[email protected] ~]$
Aus der obigen Ausgabe können wir deutlich erkennen, dass die uid für den Benutzer „linuxtechi“ 1000 ist. Sie können dann den Befehl ps und die uid verwenden, um die mit dem Benutzer verknüpften Prozesse zu finden.
$ ps -u 1000
Führen Sie für den Root-Benutzer den Befehl
aus$ ps -u root
In ähnlicher Weise können Sie dies anhand der uid des Root-Benutzers überprüfen, dessen Wert 0 ist
$ ps -u 0
8) Anzeigen von Gruppenprozessen
Das Auflisten von Gruppenprozessen ähnelt dem Auflisten von Benutzerprozessen. Sie können einen Gruppenprozess mit dem Befehl ps auflisten, indem Sie den Namen der Gruppe durch Angabe der Gruppen-ID übergeben.
Um beispielsweise die Prozesse anzuzeigen, die der Gruppe „Apache“ zugeordnet sind, führen Sie den folgenden Befehl aus:
$ ps -fG
$ ps -fG apache
Alternativ können Sie statt des Gruppennamens auch die Gruppen-ID (gid) übergeben. Sie können die GIDs aus der Datei /etc/group erhalten.
In diesem Fall lautet die Gruppen-ID für Apache beispielsweise 48. Anstatt also den Gruppennamen „apache“ anzugeben ’ einfach die GID-Nr. 48.
$ ps -fG 48
9) Anzeige von Prozessen mit PID und PPID
Linux-Prozesse können auch über die PID angezeigt werden (Prozess-ID ) und die PPID (Elternprozess-ID) . Die PPID bezieht sich auf die PID des übergeordneten Prozesses.
Um Prozesse nach PID aufzulisten, führen Sie
aus$ ps -fp PID
Um beispielsweise die mit PID 1286 verknüpften Prozesse aufzulisten, führen Sie den folgenden Befehl aus:
[[email protected] ~]$ ps -fp 1286UID PID PPID C STIME TTY TIME CMDpostfix 1286 1285 0 03:49 ? 00:00:00 Pickup -l -t unix -u[[email protected] ~]$
Um Prozesse nach PPID aufzulisten, führen Sie
aus
$ ps -f –ppid
Zum Beispiel, um Prozesse aufzulisten, die PPID 31903 gehören, laufen
$ ps -f --ppid 31903
10) Suche nach einer PID anhand des Prozessnamens
Meistens kennen wir die PID des Prozessnamens nicht. Verwenden Sie dazu das Flag -C wie abgebildet
$ ps -C
[[email protected] ~]$ ps -C firefox PID TTY TIME CMD 1446 tty2 00:00:04 firefox[[email protected] ~]$
11) Anzeigeprozess mit TTY
Wenn Sie Prozesse nach dem tty-Wert filtern möchten, verwenden Sie das -t-Flag . Um beispielsweise die an tty1 angehängten Prozesse anzuzeigen, führen Sie den Befehl ps wie gezeigt aus:
$ ps -ft tty1
12) Drucken des Prozessbaums
Ein Prozessbaum zeigt, wie Prozesse in einem Linux-System verknüpft sind. Prozesse ohne Eltern verbinden sich über init oder systemd mit dem System. Beim Drucken müssen Sie das folgende Format verwenden:
$ ps -e --forest
13) Filtern Sie einen Prozess nach dem Thread-Prozess
Um einen Prozess mithilfe des Prozess-Threads zu filtern, verwenden Sie das -L-Flag wie gezeigt,
$ ps -L 1446
14) Prozessüberwachung in Echtzeit
Sie können das Dienstprogramm watch verwenden, um statische Informationen zu einem Prozess zu überwachen. Die Ausgabe wird wie unten gezeigt jede Sekunde abgespielt
$ watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | Kopf'
Der Befehl gibt die Spalten pid, ppid, cmd, %mem und %cpu aus und überwacht die Statistiken jede einzelne Sekunde, während er die %CPU-Auslastung sortiert in absteigender Reihenfolge.
15) Fehlerbehebung bei Leistungsproblemen des Linux-Rechners
Wenn Ihr System langsam oder überlastet ist, können Sie den am häufigsten ausgeführten Prozess anhand der höchsten CPU- und Speicherauslastung identifizieren
Führen Sie den folgenden ps-Befehl aus, um die wichtigsten Prozesse aufzulisten, die viel Speicher verbrauchen,
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | Kopf
Führen Sie den folgenden ps-Befehl aus, um die wichtigsten Prozesse aufzulisten, die viel CPU verbrauchen,
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | Kopf
Beispielausgabe des obigen ps-Befehls auf meinem System ist unten,
16) Beenden von nicht reagierenden Prozessen
Mit dem Befehl ps können Sie nicht reagierende Anwendungen oder alle Prozesse beenden, die CPU und RAM in Beschlag nehmen. Dazu müssen Sie die PID dieser bestimmten Anwendung mit dem folgenden Befehl ermitteln:
$ ps -A | grep -i stress
Sobald Sie die PID des Prozesses gefunden haben, können Sie ihn mit dem Kill-Befehl beenden, das Beispiel ist unten gezeigt,
$ kill -9 2583 2584
17) Alle PIDs aller Prozessinstanzen auflisten
Sie können alle einem Prozess zugeordneten PIDs auflisten, indem Sie die folgende Syntax verwenden:
$ ps -C
Um beispielsweise die mit dem httpd-Webserver verknüpften PIDs herauszufinden, führen Sie Folgendes aus:
$ ps -C httpd -o pid=
18) Zeigen Sie die Dauer an, die Prozesse ausgeführt wurden
Führen Sie den folgenden Befehl aus, um anzuzeigen, wie lange Prozesse ausgeführt wurden:
$ ps -eo comm,etime,user
Verwenden Sie den folgenden ps-Befehl, um zu erfahren, wie lange ein bestimmter Prozess ausgeführt wurde,
$ ps -o etime -p
Nehmen wir an, wir möchten etwas über den MySQL-Prozess erfahren
[[email protected] ~]$ ps -C mysqld -o pid= 3807[[email protected] ~]$[[email protected] ~]$ ps -o etime -p 3807 ELAPSED 01:13:56[ [email protected] ~]$
19) Untergeordnete Prozesse eines Prozesses auflisten
Um die untergeordneten Prozesse eines Prozesses zu drucken oder aufzulisten, verwenden Sie -C-Flag in der folgenden Syntax:
$ ps -C
Um beispielsweise untergeordnete Prozesse aufzulisten, die dem httpd-Prozess zugeordnet sind, führen Sie
aus[[email protected] ~]$ ps -C httpd PID TTY TIME CMD31911 ? 00:00:00 httpd31918 ? 00:00:00 httpd31919 ? 00:00:00 httpd31920 ? 00:00:01 httpd31921 ? 00:00:01 httpd31922 ? 00:00:01 httpd[[email protected] ~]$
20) Filtern der Ausgabe des ps-Befehls mit grep
Um bestimmte Ergebnisse im Befehl ps zu erhalten, können Sie die Ausgabe an das Hilfsprogramm grep weiterleiten und die Suchkriterien angeben.
Um beispielsweise nach PHP-Prozessen zu suchen oder diese einzugrenzen, führen Sie den folgenden Befehl aus:
$ ps -ef | grep php
Wir haben die 20 wichtigsten ps - Befehle aufgelistet , die häufig zum Auflisten und Überwachen der Prozesse verwendet werden , die auf Ihrem Linux - System ausgeführt werden . Diese Befehle funktionieren in allen Linux-Distributionen und geben Ihnen sicherlich einen Überblick über die auf Ihrem System laufenden Prozesse und helfen Ihnen festzustellen, welche Ihre CPU- und RAM-Ressourcen überlasten. Fanden Sie diesen Leitfaden aufschlussreich? Fühlen Sie sich frei, es zu mögen und auf Ihren Social-Media-Plattformen zu teilen. Ihr Feedback ist uns sehr willkommen.
Lesen Sie auch :25 Top-Befehlsbeispiele zur Überwachung der Linux-Serverleistung