Was ist der ps-Befehl unter Linux?
Der Befehl ps in Linux wird verwendet, um Informationen zu laufenden Prozessen auf dem System anzuzeigen. Sie können Informationen wie die Prozess-ID (PID) für die Prozesse erhalten, die Sie oder ein anderer Benutzer auf demselben Linux-System ausführen.
Der Befehl ps ist ein umfangreiches Werkzeug für sich und verfügt über mehr als 80 Befehlsoptionen. Sie können seine Stärke und Komplexität verstehen. Aus diesem Grund werde ich Ihnen einige der gebräuchlichsten und nützlichsten Beispiele für den Befehl ps unter Linux zeigen.
Grundlegende Verwendung des ps-Befehls in Linux
Wenn Sie den Befehl ps ohne Optionen unter Linux verwenden, werden die laufenden Prozesse in der aktuellen Shell angezeigt:
ps
Dies ist die Ausgabe. Ich habe den Gedit-Befehl im Hintergrund gesendet, deshalb werden drei Prozesse angezeigt, ansonsten sehen Sie normalerweise nur ps und bash.
PID TTY TIME CMD
503 pts/0 00:00:00 gedit
2053 pts/0 00:00:00 ps
31585 pts/0 00:00:00 bash
Hier drin:
- PID ist die eindeutige Prozess-ID des Prozesses
- TTY ist der Terminaltyp, an dem der Benutzer angemeldet ist. pts bedeutet Pseudoterminal
- TIME gibt an, wie lange der Prozess läuft
- CMD ist der Befehl, den Sie ausführen, um den Prozess zu starten
Das liefert jetzt nicht wirklich nützliche Informationen. Sehen wir uns einige bessere Beispiele für den Befehl ps an:
1. Sehen Sie alle Ihre laufenden Prozesse
Wenn Sie alle von Ihnen ausgeführten Prozesse sehen möchten, können Sie den Befehl ps mit der Option x wie folgt verwenden:
ps -x
Die Option x zeigt alle Prozesse an, auch wenn sie nicht mit dem aktuellen tty (Terminaltyp) verknüpft sind oder wenn sie kein steuerndes Terminal haben (wie Daemons).
Die – Before-Option x ist optional, aber die allgemeine Linux-Konvention ist die Verwendung von – Before-Optionen, daher rate ich Ihnen, sie weiterhin zu befolgen. Es wird dir nicht wehtun.
So sieht die Ausgabe aus. Ich habe die Ausgabe abgeschnitten, weil sie Hunderte von Zeilen hatte:
PID TTY STAT TIME COMMAND
503 pts/0 Sl 0:00 gedit
2245 ? S 0:00 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh
3039 ? Ss 0:00 /lib/systemd/systemd --user
3040 ? S 0:00 (sd-pam)
3054 ? SLl 0:01 /usr/bin/gnome-keyring-daemon --daemonize --login
3059 tty2 Ssl+ 0:00 /usr/lib/gdm3/gdm-x-session --run-script env
Der STAT in der obigen Ausgabe bedeutet Process State Codes. Eine detaillierte Tabelle finden Sie in der Manpage des Befehls ps.
Aber Sie werden selten sehen, dass der Befehl ps nur mit Option x verwendet wird. Es wird normalerweise auf diese Weise von der Option u begleitet:
ps -ux
Mit Option u erhalten Sie detaillierte Informationen zu jedem Prozess:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
abhishek 503 0.0 0.4 681580 37516 pts/0 Sl 18:09 0:00 gedit
abhishek 2245 0.0 0.0 11300 1496 ? S 18:37 0:00 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh
abhishek 3039 0.0 0.0 77344 3508 ? Ss 10:37 0:00 /lib/systemd/systemd --user
abhishek 3040 0.0 0.0 114632 360 ? S 10:37 0:00 (sd-pam)
abhishek 3054 0.0 0.1 517104 11512 ? SLl 10:37 0:01 /usr/bin/gnome-keyring-daemon --daemonize --login
Wie Sie sehen können, erhalten Sie jetzt den Benutzernamen und den CPU-Verbrauch und die Speicherauslastung jedes Prozesses. RSS zeigt, wie viel Speicher der Prozess derzeit im RAM hat, während VSZ angibt, wie viel virtueller Speicher der Prozess insgesamt hat.
2. Alle laufenden Prozesse mit dem Befehl ps aux anzeigen
Sie werden wahrscheinlich ps -aux
sehen oder ps aux
ständig in Linux-Tutorials und -Dokumentationen.
Mit der hinzugefügten Option -a können Sie die laufenden Prozesse aller Benutzer auf dem Linux-System sehen.
ps -aux
Die Befehlsausgabe ist die gleiche wie bei ps -ux, aber jetzt haben Sie auch Prozesse von anderen Benutzern. Dank der Option -u können Sie erkennen, welcher Prozess zu welchem Benutzer gehört.
3. Alle laufenden Prozesse mit dem Befehl ps -ef unter Linux anzeigen
Abgesehen von ps -aux können Sie auch alle laufenden Prozesse mit dem Befehl -e auflisten. Die übliche Praxis besteht darin, sie mit Option f zu kombinieren, um eine vollständige Liste der Befehle zu erhalten, die zum Ausführen der Prozesse verwendet werden.
ps -ef
Beachten Sie, dass – bevor e wichtig ist, sonst ein anderes Ergebnis angezeigt wird. Ich sagte doch, ps ist ein verkorkster, komplizierter Befehl.
Sie können auch die H-Option kombinieren, um alle Prozesse in einer Thread-Ansicht mit untergeordneten Prozessen unter ihren Eltern anzuzeigen:
ps -efH
4. Alle laufenden Prozesse eines bestimmten Benutzers anzeigen
Um Informationen über alle Prozesse zu erhalten, die von einem bestimmten Benutzer ausgeführt werden, können Sie die Option -U mit dem Benutzernamen verwenden:
ps -U user_name
Zum Beispiel kann ich alle Prozesse sehen, die vom Root-Benutzer wie folgt ausgeführt werden:
ps -U root
PID TTY TIME CMD
1 ? 00:00:41 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 rcu_gp
4 ? 00:00:00 rcu_par_gp
8 ? 00:00:00 mm_percpu_wq
9 ? 00:00:03 ksoftirqd/0
10 ? 00:01:22 rcu_sched
5. Alle von einer Gruppe ausgeführten Prozesse anzeigen
Sie können laufende Prozesse auch nach Gruppe anstatt nach Benutzer kategorisieren, indem Sie den Gruppennamen oder die Gruppen-ID angeben:
ps -G group_name_or_id
Sie können mit Option f kombinieren, um die vollständige Liste zu erhalten.
6. Erhalten Sie alle Vorkommen und PID eines Programms
Eine der wichtigsten Verwendungszwecke des Befehls ps besteht darin, die Prozess-ID (PID) eines laufenden Programms abzurufen. Wenn Sie ein sich schlecht benehmendes Programm beenden möchten, suchen Sie normalerweise nach allen Vorkommen des Programms, erhalten ihre PIDs und verwenden den Befehl kill, um den Prozess zu beenden.
ps -C program__name
Zum Beispiel, wenn ich alle laufenden Instanzen des apt-Paketmanagers finden muss:
ps -C apt
PID TTY TIME CMD
11425 pts/1 00:00:00 apt
Sie können auch den Befehl grep verwenden, um ein ähnliches Ergebnis zu erhalten.
ps aux | grep program_name
7. Prozessinformationen über eine PID erhalten
In Ordnung! Sie haben eine PID, wissen aber nicht, zu welchem Prozess sie gehört. Sie können den Befehl ps verwenden, um die Prozessinformationen von seiner PID auf diese Weise zu finden:
ps -pN
Sie können mehr als eine PID verwenden, indem Sie sie durch Komma trennen:
ps -pN1,N2,N3
Was noch?
Wie ich bereits sagte, ist ps ein komplizierter und umfangreicher Befehl. Dies waren einige der häufigsten Beispiele für ps-Befehle, die Sie die meiste Zeit benötigen werden. Wenn Sie mehr wollen, können Sie jederzeit auf die Manpage verweisen.
Wenn Sie ein anderes nützliches Beispiel für den Befehl ps haben, das Sie regelmäßig verwenden, warum teilen Sie es nicht im Kommentarbereich mit uns anderen?