Fatmawati Achmad Zaenuri / Shutterstock
Holen Sie sich mit dem einen Schnappschuss der Prozesse, die auf Ihrem Linux-Computer ausgeführt werden ps
Befehl. Suchen Sie Prozesse nach Name, Benutzer oder sogar Terminal mit so vielen oder so wenigen Details, wie Sie benötigen. Wir zeigen Ihnen wie.
Prozessmanagement unter Linux
Das Herzstück aller Linux- und Unix-ähnlichen Betriebssysteme ist der Kernel. Zu seinen zahlreichen Aufgaben gehört die Zuweisung von Systemressourcen wie RAM und CPU-Zeit. Diese müssen in Echtzeit jongliert werden, damit alle laufenden Prozesse entsprechend der Priorität jeder Aufgabe ihren gerechten Anteil erhalten.
Manchmal können Aufgaben blockieren oder in eine enge Schleife geraten oder aus anderen Gründen nicht mehr reagieren. Oder sie laufen weiter, verschlingen aber zu viel CPU-Zeit oder RAM oder verhalten sich ebenso unsozial. Manchmal müssen Aufgaben als Gnade für alle Beteiligten getötet werden. Der erste Schritt. Natürlich ist es, den fraglichen Prozess zu identifizieren.
Aber vielleicht haben Sie überhaupt keine Aufgaben- oder Leistungsprobleme. Vielleicht sind Sie nur neugierig, welche Prozesse in Ihrem Computer ausgeführt werden, und möchten einen Blick unter die Haube werfen. Das ps
Befehl erfüllt diese beiden Anforderungen. Es gibt dir Eine Momentaufnahme dessen, was in Ihrem Computer passiert „jetzt sofort.“
ps
ist flexibel genug, um Ihnen genau die Informationen zu geben, die Sie in genau dem Format benötigen, das Sie möchten. Eigentlich, ps
hat sehr viele Möglichkeiten. Die hier beschriebenen Optionen erfüllen die gängigsten Anforderungen. Wenn Sie tiefer gehen müssen ps
Als wir es in diesem Artikel beschrieben haben, werden Sie feststellen, dass unsere Einführung die Manpage leichter verdaulich macht.
Listungsprozesse
Der einfachste Weg zu bedienen ps
ist es ohne Parameter zu starten:
ps

ps
Zeigt eine Liste der Prozesse an, die von dem Benutzer gestartet wurden, der den Befehl ausgeführt hat.

Die vier Spalten sind:
- PID: Die Prozess-ID-Nummer des Prozesses.
- TTY: Der Name der Konsole, an der der Benutzer angemeldet ist.
- ZEIT: Die vom Prozess verwendete CPU-Verarbeitungszeit.
- CMD: Der Name des Befehls, der den Prozess gestartet hat
Listungsprozess für alle Benutzer
durch Hinzufügen der -e
(alle Prozesse auswählen) können wir machen ps
Listen Sie die Prozesse auf, die von allen Benutzern gestartet wurden, nicht nur von dem Benutzer, der das ausführt ps
Befehl. Da dies eine lange Liste sein wird, leiten wir sie weiter less
.
ps -e | less

Die Prozessliste wird weitergeleitet less
.

Wir haben viel mehr Einträge in der Liste, aber wir sehen die gleichen vier Spalten wie zuvor. Die Einträge mit einem Fragezeichen ?
in dem TTY
Spalte wurden nicht von einem Terminalfenster aus gestartet.
Prozesshierarchie anzeigen
Manchmal kann es hilfreich sein, ein Problem herauszufinden oder einen bestimmten Prozess zu identifizieren, wenn Sie sehen können, welche Prozesse andere Prozesse gestartet haben. Wir nehmen das -H
(Hierarchie-) Option dazu.
ps -eH | less

Der Einzug gibt an, welche Prozesse Eltern welcher anderen Prozesse sind.

Um etwas mehr Klarheit zu schaffen, können wir fragen ps
einige hinzufügen ASCII Linien und die Hierarchie als Baum zu zeichnen. Die Option dazu ist die --forest
Möglichkeit.
ps -eH --forest | less

Dies erleichtert die Verfolgung, welche Prozesse die Eltern anderer Prozesse sind.

Auflisten von Prozessen nach Namen
Sie können die Ausgabe von weiterleiten ps
durch grep
Einträge auflisten die Namen haben, die mit dem Suchbegriff übereinstimmen. Hier suchen wir nach Einträgen, die dem Suchbegriff „Firefox“ entsprechen:
ps -e | grep firefox

In diesem Fall ist die Ausgabe ein einzelner Eintrag für den Prozess, an dem wir interessiert sind. Wenn wir mehrere Instanzen von Firefox gestartet hätten, würde natürlich mehr als ein Element in der Liste zurückgegeben.

Weitere Spalten in der Ausgabe anzeigen
Verwenden Sie die Option, um der Ausgabe weitere Spalten hinzuzufügen -f
Option (Vollformat).
ps -ef | less

Ein zusätzlicher Satz von Spalten ist in der Ausgabe von enthalten ps
.

Die Spalten sind:
- UID: Die Benutzer-ID des Eigentümers dieses Prozesses.
- PID: Die Prozess-ID des Prozesses.
- PPID: Übergeordnete Prozess-ID des Prozesses.
- C.: Die Anzahl der Kinder, die der Prozess hat.
- STIME: Startzeit. Die Zeit, zu der der Prozess begann.
- TTY: Der Name der Konsole, an der der Benutzer angemeldet ist.
- ZEIT: Die vom Prozess verwendete CPU-Verarbeitungszeit.
- CMD: Der Name des Befehls, der den Prozess gestartet hat.
Mit dem -F
(extra Vollformat) Option können wir noch mehr Spalten bekommen:
ps -eF | less

Für die Spalten, die wir diesmal erhalten, muss der Bildschirm seitwärts gescrollt werden, um alle anzuzeigen.

Durch Drücken der Taste „Rechtspfeil“ wird die Anzeige nach links verschoben.

Die Spalten, die wir jetzt erhalten, sind:
- UID: Die Benutzer-ID des Eigentümers dieses Prozesses.
- PID: Die Prozess-ID des Prozesses.
- PPID: Übergeordnete Prozess-ID des Prozesses.
- C.: Die Anzahl der Kinder, die der Prozess hat.
- SZ: Größe des Prozessabbilds in RAM-Seiten.
- RSS: Resident Set Größe. Dies ist der nicht ausgelagerte physische Speicher, der vom Prozess verwendet wird.
- PSR: Der Prozessor, dem der Prozess zugewiesen ist.
- STIME: Startzeit. Die Zeit, zu der der Prozess begann.
- TTY: Der Name der Konsole, an der der Benutzer angemeldet ist.
- ZEIT: Die vom Prozess verwendete CPU-Verarbeitungszeit.
- CMD: Der Name des Befehls, der den Prozess gestartet hat.
Auflisten von Prozessen nach Prozess-ID
Sobald Sie die Prozess-ID für den Prozess gefunden haben, an dem Sie interessiert sind, können Sie sie mit dem verwenden ps
Befehl, um die Details dieses Prozesses aufzulisten. Verwenden Sie die -p
Option (nach Prozess-ID auswählen), um dies zu erreichen:
ps -p 3403

Die Details für diesen Prozess sind aufgeführt:

Sie sind nicht auf eine Prozess-ID beschränkt. Sie können eine Liste von Prozess-IDs bereitstellen, die durch Leerzeichen getrennt sind.
Auflisten von Prozessen nach Befehl
Das -C
Mit der Option (Befehl) können Sie anhand des Befehlsnamens nach einem Prozess suchen. Das heißt, der Name des Befehls, der den Prozess gestartet hat. Dies unterscheidet sich geringfügig von der Befehlszeile, die Pfadnamen und Parameter oder Optionen enthalten kann.
ps -C shutter

Die Details für den Verschlussvorgang sind aufgelistet.
Auflisten von Prozessen, die einem Benutzer gehören
Verwenden Sie die, um die Prozesse anzuzeigen, die einem bestimmten Benutzer gehören -u
Option (Benutzerliste):
ps -u mary

Die Prozesse des Benutzerkontos Mary werden angezeigt.

Auflisten von Prozessen nach Terminal
Verwenden Sie die, um die mit einem TTY verknüpften Prozesse anzuzeigen -t
Option (nach TTY auswählen). Wird ohne TTY-Nummer verwendet, wird die -t
Optionsberichte zu Prozessen, die dem aktuellen Terminalfenster zugeordnet sind.
tty
ps -t

Das tty
Befehl meldet, dass dies Pseudo-Teletyp 0 ist. Die von aufgelisteten Prozesse ps -t
sind alle mit TTY verbunden pts/0
.
Wenn wir eine TTY-Nummer in der Befehlszeile übergeben, sollten wir einen Bericht über die mit diesem TTY verbundenen Prozesse erhalten.
ps -t 1

Diesmal sind alle Prozesse mit TTY verknüpft pts/1
.
Auswählen der anzuzeigenden Spalten
Mit dem -o
Mit der Option (Format) können Sie auswählen, aus welchen Spalten Sie die Ausgabe aufnehmen möchten ps
. Sie geben die Spalten nach Namen an. Die (lange) Liste der Spaltennamen ist auf der zu sehen Manpage im Abschnitt „Standardformatspezifizierer“. In diesem Beispiel wählen wir die CPU-Zeit (pcpu
) und die Kommandozeile mit Argumenten (args
) in der Ausgabe enthalten.
ps -e -o pcpu,args | less

Die Ausgabe enthält nur unsere zwei angeforderten Spalten.

Sortieren der Ausgabe nach Spalten
Sie können die Ausgabe mithilfe von für Sie sortieren lassen --sort
Möglichkeit. Sortieren wir die Ausgabe nach der CPU-Spalte:
ps -e -o pcpu,args --sort -pcpu| less

Der Bindestrich “-
“ auf der pcpu
Der Sortierparameter gibt eine absteigende Sortierreihenfolge an.

Um die zehn CPU-intensivsten Prozesse anzuzeigen, leiten Sie die Ausgabe durch die head
Befehl::
ps -e -o pcpu,args --sort -pcpu | head -10

Wir erhalten eine sortierte, abgeschnittene Liste.

Wenn wir unserer Anzeige weitere Spalten hinzufügen, können wir nach weiteren Spalten sortieren. Fügen wir das hinzu pmem
Säule. Dies ist der Prozentsatz des Computerspeichers, der vom Prozess verwendet wird. Ohne Bindestrich oder mit Pluszeichen “ +
“, Die Sortierreihenfolge steigt auf.
ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10

Wir erhalten unsere zusätzliche Spalte und die neue Spalte wird in die Sortierung einbezogen. Die erste Spalte wird vor der zweiten Spalte sortiert, und die zweite Spalte wird in aufsteigender Reihenfolge sortiert, da wir keinen Bindestrich gesetzt haben pmem
.

Machen wir es etwas nützlicher und fügen es in die Spalte Prozess-ID ein (pid
), damit wir die Prozessnummer jedes Prozesses in unserer Liste sehen können.
ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10

Jetzt können wir die Prozesse identifizieren.

Prozesse nach Prozess-ID beenden
Wir haben eine Reihe von Möglichkeiten zur Identifizierung von Prozessen behandelt, darunter Name, Befehl, Benutzer und Terminal. Wir haben auch Möglichkeiten zur Identifizierung von Prozessen anhand ihrer dynamischen Attribute wie CPU-Auslastung und Speicher behandelt.
Auf die eine oder andere Weise können wir also die laufenden Prozesse identifizieren. Wenn wir ihre Prozess-ID kennen, können wir (falls erforderlich) jeden dieser Prozesse mit dem beenden kill
Befehl. Wenn wir Prozess 898 beenden wollten, würden wir dieses Format verwenden:
sudo kill 898

Wenn alles gut geht, wird der Prozess stillschweigend beendet.

Prozesse nach Namen töten
Das pkill
Befehl ermöglicht es Ihnen Prozesse mit Namen beenden. Stellen Sie sicher, dass Sie den richtigen Prozess identifiziert haben! Dieser Befehl beendet den obersten Prozess.
sudo pkill top

Auch hier sind keine Nachrichten gute Nachrichten. Der Prozess wird stillschweigend beendet.

Mehrere Prozesse nach Namen beenden
Wenn mehrere Kopien eines Prozesses ausgeführt werden oder ein Prozess eine Reihe von untergeordneten Prozessen hervorgebracht hat (wie dies bei Google Chrome möglich ist), wie können Sie diese beenden? Das ist genauso einfach. Wir nehmen das killall
Befehl.
Wir haben zwei Exemplare von Top Running:
ps -e | grep top

Wir können kündigen beide mit diesem Befehl::
sudo killall top

Keine Antwort bedeutet keine Probleme, daher wurden beide Prozesse beendet.

Holen Sie sich eine dynamische Ansicht mit oben
Die Ausgabe von ps
ist eine Schnappschussansicht. Es wird nicht aktualisiert. Verwenden Sie die Option, um eine aktualisierte Ansicht der Prozesse zu erhalten top
Befehl. Es bietet eine dynamische Ansicht der Prozesse, die auf Ihrem Computer ausgeführt werden. Das Display besteht aus zwei Teilen. Am oberen Rand des Bildschirms befindet sich ein Dashboard-Bereich, der aus Textzeilen besteht, und im unteren Teil des Bildschirms eine Tabelle, die aus Spalten besteht.
Start top
mit diesem Befehl:
top

Die Spalten enthalten Informationen zu den Prozessen:
- PID: Prozess ID
- NUTZER: Name des Eigentümers des Prozesses
- PR: Prozesspriorität
- NI: Der schöne Wert des Prozesses
- VIRT: Vom Prozess verwendeter virtueller Speicher
- RES: Vom Prozess verwendeter residenter Speicher
- SHR: Vom Prozess verwendeter gemeinsamer Speicher
- S.: Status des Prozesses. In der folgenden Liste sind die Werte aufgeführt, die dieses Feld annehmen kann
- %ZENTRALPROZESSOR: Der Anteil der CPU-Zeit, der vom Prozess seit dem letzten Update verwendet wurde
- % MEM: Anteil des verwendeten physischen Speichers
- ZEIT +: Gesamt-CPU-Zeit, die von der Task in Hundertstelsekunden verwendet wird
- BEFEHL: Befehlsname oder Befehlszeile (Name und Befehlszeilenparameter) Wenn die Befehlsspalte nicht angezeigt wird, drücken Sie die Taste „Pfeil nach rechts“.
Der Status des Prozesses kann einer der folgenden sein:
- D.: Ununterbrochener Schlaf
- R.: Laufen
- S.: Schlafen
- T.: Verfolgt (gestoppt)
- Z.: Zombie
Drücken Sie die Taste „Q“, um das Menü zu verlassen top
.
Bevor Sie einen Prozess beenden
Stellen Sie sicher, dass es das ist, nach dem Sie suchen, und stellen Sie sicher, dass es Ihnen keine Probleme bereiten wird. Insbesondere lohnt es sich, sich bei der zu erkundigen -H
(Hierarchie) und --forest
Optionen, um sicherzustellen, dass keine wichtigen untergeordneten Prozesse vorhanden sind, die Sie vergessen haben.