Einführung
In diesem Artikel werden wir die gängigsten Befehle mit Beispielen diskutieren, die in der Prozessüberwachung in Linux-Systemen verwendet werden, wie z. B. :
- ps
- oben
- top
- lsof
1. p.s.
Wie wir alle wissen, ist Linux ein Multitasking- und Mehrbenutzersystem. So können mehrere Prozesse gleichzeitig ausgeführt werden, ohne sich gegenseitig zu stören. Prozess ist eines der wichtigen Grundkonzepte des Linux-Betriebssystems. Ein Prozess ist eine ausführende Instanz eines Programms und führt verschiedene Aufgaben innerhalb des Betriebssystems aus.
Linux stellt uns ein Dienstprogramm namens ps zur Verfügung zum Anzeigen von Informationen zu den Prozessen auf einem System, das als Abkürzung für „Prozessstatus“ steht Der Befehl ps wird verwendet, um die aktuell laufenden Prozesse und ihre PIDs zusammen mit einigen anderen Informationen aufzulisten, die von verschiedenen Optionen abhängen. Es liest die Prozessinformationen aus den virtuellen Dateien in /proc Dateisystem. /proc enthält virtuelle Dateien, deshalb wird es als virtuelles Dateisystem bezeichnet.
ps bietet zahlreiche Optionen, um die Ausgabe nach unseren Bedürfnissen zu manipulieren.
Syntax :
ps [options]
Optionen für den ps-Befehl:
1- Einfache Prozessauswahl:
Zeigt die Prozesse für die aktuelle Shell
Das Ergebnis enthält vier Spalten mit Informationen.
Woher,
PID – die eindeutige Prozess-ID
TTY – Terminaltyp, an dem der Benutzer angemeldet ist
ZEIT – CPU-Menge in Minuten und Sekunden, die der Prozess ausgeführt wurde
CMD – Name des Befehls, der den Prozess gestartet hat.
Hinweis – Manchmal, wenn wir ps ausführen Befehl, zeigt es TIME als 00:00:00 an. Es ist nichts anderes als die gesamte kumulierte CPU-Auslastungszeit für einen beliebigen Prozess, und 00:00:00 zeigt an, dass der Kernel bis jetzt keine CPU-Zeit angegeben hat. Im obigen Beispiel haben wir festgestellt, dass für bash keine CPU-Zeit angegeben wurde. Dies liegt daran, dass Bash nur ein übergeordneter Prozess für verschiedene Prozesse ist, die Bash für ihre Ausführung benötigen, und Bash selbst verbraucht bis jetzt keine CPU-Zeit.
2. Prozesse anzeigen:
Alle laufenden Prozesse anzeigen, verwenden Sie eine der folgenden Optionen mit ps –
# ps -A
# ps -e
3. Prozesse anzeigen, die keinem Terminal zugeordnet sind:
Alle Prozesse anzeigen, außer Sitzungsleitern und Prozessen, die keinem Terminal zugeordnet sind.
# ps -a
Hinweis – Sie denken vielleicht, was ist Sitzungsleiter? Jeder Prozessgruppe wird eine eigene Sitzung zugeordnet. Der Sitzungsleiter ist also ein Prozess, der andere Prozesse anstößt. Die Prozess-ID des ersten Prozesses einer Sitzung ist ähnlich wie die Sitzungs-ID.
4. Alle Prozesse außer Sitzungsleiter anzeigen:
# ps -d
5. Alle Prozesse anzeigen, außer denen, die die angegebenen Bedingungen erfüllen (annulliert die Auswahl) :
Beispiel – Wenn Sie nur Sitzungsleiter und Prozesse sehen möchten, die keinem Terminal zugeordnet sind. Führen Sie dann
# ps -a -N
or
# ps -a --deselect
6. Alle mit diesem Terminal verbundenen Prozesse anzeigen:
# ps -T
7. Alle laufenden Prozesse anzeigen:
# ps -r
8. Alle Prozesse anzeigen, die Ihnen gehören: Verarbeitet d. h. die gleiche EUID wie ps, was den Ausführenden des ps-Befehls bedeutet, in diesem Fall root
# ps -x
Prozessauswahl nach Liste
Hier werden wir besprechen, wie Sie die spezifische Prozessliste mit Hilfe des Befehls ps erhalten. Diese Optionen akzeptieren ein einzelnes Argument in Form einer durch Leerzeichen oder Kommas getrennten Liste. Sie können mehrfach verwendet werden.
Zum Beispiel: ps -p „1 2“ -p 3,4
- Wählen Sie den Prozess anhand des Befehlsnamens aus. Dadurch werden die Prozesse ausgewählt, deren ausführbarer Name in cmdlist angegeben ist. Es besteht die Möglichkeit, dass Sie die Prozess-ID nicht kennen und mit diesem Befehl ist die Suche einfacher.
Syntax: ps -C Befehlsname
Beispiel :
[root@unixcop ~]# ps -C dhclient
PID TTY TIME CMD
19815 ? 00:00:00 dhclient
2. Wählen Sie nach Gruppen-ID oder Name aus. Die Gruppen-ID identifiziert die Gruppe des Benutzers, der den Prozess erstellt hat.
Syntax : ps -G group_name
ps --Group group_name
Example :
[root@unixcop ~]# ps -G root
3. Nach Gruppen-ID anzeigen:
Syntax : ps -g group_id ps -group group_id
Jetzt Beispiel :
# ps -g 1
4. Prozess nach Prozess-ID anzeigen.
-Syntax : ps p process_id ps -p process_id ps --pid process_id
Und Beispiele:
[root@unixcop ~]# ps p 27223
PID TTY STAT TIME COMMAND
27223 ? Ss 0:01 sshd: root@pts/2
[root@unixcop ~]# ps -p 27223
PID TTY TIME CMD
27223 ? 00:00:01 sshd
[root@unixcop ~]# ps --pid 27223
PID TTY TIME CMD
27223 ? 00:00:01 sshd
Sie können mehrere Prozesse anzeigen, indem Sie mehrere Prozess-IDs angeben, die durch Leerzeichen oder Kommas getrennt sind –
–Für Beispiel:
[root@unixcop ~]# ps -p 1 904 27223
PID TTY STAT TIME COMMAND
1 ? Ss 0:13 /usr/lib/systemd/systemd --switched-root --system --d
904 tty1 Ssl+ 1:02 /usr/bin/X -core -noreset :0 -seat seat0 -auth /var/r
27223 ? Ss 0:01 sshd: root@pts/2
Hier haben wir drei Prozess-IDs erwähnt – 1, 904 und 27223, die durch Leerzeichen getrennt sind.
5. Wählen Sie nach übergeordneter Prozess-ID aus. Mit diesem Befehl können wir alle Prozesse anzeigen, die dem übergeordneten Prozess gehören, mit Ausnahme des übergeordneten Prozesses.
Beispiele :
[root@unixcop ~]# ps -p 766
PID TTY TIME CMD
766 ? 00:00:06 NetworkManager
[root@unixcop ~]# ps --ppid 766
PID TTY TIME CMD
19815 ? 00:00:00 dhclient
Im obigen Beispiel Prozess-ID 766 ist NetworkManager zugewiesen und dies ist der übergeordnete Prozess für dhclient mit der Prozess-ID 19815.
6. Zeigen Sie alle Prozesse an, die zu einer beliebigen Sitzungs-ID gehören.
Syntax :
ps -s session_id
ps --sid session_id
Example :
[root@unixcop ~]# ps -s 1248
PID TTY TIME CMD
1248 ? 00:00:00 dbus-daemon
1276 ? 00:00:00 dconf-service
1302 ? 00:00:00 gvfsd
1310 ? 00:00:00 gvfsd-fuse
1369 ? 00:00:00 gvfs-udisks2-vo
1400 ? 00:00:00 gvfsd-trash
1418 ? 00:00:00 gvfs-mtp-volume
1432 ? 00:00:00 gvfs-gphoto2-vo
1437 ? 00:00:00 gvfs-afc-volume
1447 ? 00:00:00 wnck-applet
1453 ? 00:00:00 notification-ar
1454 ? 00:00:02 clock-applet
7. Wählen Sie nach tty. Dies wählt die Prozesse aus, die dem erwähnten tty :
zugeordnet sindThe Syntax : ps t tty ps -t tty ps --tty tty
Zum Beispiel :
# ps -t pts/0
8. Wählen Sie nach effektiver Benutzer-ID oder Name aus.
Und die Syntax ist:
ps U Benutzername/ID
ps -U Benutzername/ID
Steuerung des Ausgabeformats
Diese Optionen werden verwendet, um die von ps angezeigten Informationen auszuwählen. Es gibt mehrere Optionen zum Steuern des Ausgabeformats. Diese Option kann mit beliebigen anderen Optionen wie e, u, p, G, g kombiniert werden usw., hängt von unserem Bedarf ab.
1. Verwenden Sie -f um die Liste im Vollformat anzuzeigen.
ps -af
2. Verwenden Sie -F um das Extra-Vollformat anzuzeigen.
ps -F
3. Um den Prozess gemäß dem benutzerdefinierten Format anzuzeigen.
# ps --formate column_name
# ps -o column_name
# ps o column_name
Beispiel :
ps -aN --format cmd,pid,user,ppid
In diesem Beispiel möchte ich den Befehl, die Prozess-ID, den Benutzernamen und die übergeordnete Prozess-ID sehen, also übergebe ich die Argumente cmd, pid, user bzw. ppid.
4. Anzeige im BSD-Jobsteuerungsformat :
ps -j
5. BSD-Langformat anzeigen:
ps l
6. Fügen Sie eine Spalte mit Sicherheitsdaten hinzu.
ps -aM
7. Befehl mit Signalformat anzeigen.
[root@unixcop ~]# ps s 766
8. Benutzerorientiertes Format anzeigen
ps u 1
9. Format des virtuellen Speichers anzeigen
ps v 1
10. Wenn Sie die Umgebung eines beliebigen Befehls sehen möchten. Verwenden Sie dann die Option **e** –
[root@unixcop ~]# ps ev 766
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
766 ? Ssl 0:08 47 2441 545694 10448 1.0 /usr/sbin/NetworkManager --no-daemon LANG=en_US.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
11. Zeigen Sie Prozesse an, die den höchsten Speicher verwenden.
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
12. Drucke einen Prozessbaum
[root@unixcop ~]# ps --forest -C sshd
PID TTY TIME CMD
797 ? 00:00:00 sshd
11680 ? 00:00:03 \_ sshd
16361 ? 00:00:02 \_ sshd
13. Alle Threads für einen bestimmten Prozess auflisten. Verwenden Sie entweder das -T oder -L Option zum Anzeigen von Threads eines Prozesses.
[root@unixcop ~]# ps -C sshd -L
PID LWP TTY TIME CMD
797 797 ? 00:00:00 sshd
11680 11680 ? 00:00:03 sshd
16361 16361 ? 00:00:02 sshd
Hinweis – Für die Erklärung verschiedener Spalteninhalte siehe Manpage.
Referenz : Manpage
2. oben
oben Befehl wird verwendet, um die Linux-Prozesse anzuzeigen. Es bietet eine dynamische Echtzeitansicht des laufenden Systems. Normalerweise zeigt dieser Befehl die zusammenfassenden Informationen des Systems und die Liste der Prozesse oder Threads an, die derzeit vom Linux-Kernel verwaltet werden.
Sobald Sie diesen Befehl ausführen, wird ein interaktiver Befehlsmodus geöffnet, in dem die obere Hälfte die Statistiken der Prozesse und der Ressourcennutzung enthält. Und die untere Hälfte enthält eine Liste der derzeit laufenden Prozesse. Drücken Sie q verlässt einfach den Befehlsmodus.
Syntax :
top
Hier
- PID: Zeigt die eindeutige Prozess-ID der Aufgabe.
- PR: Steht für Priorität der Aufgabe.
- SHR: Stellt die Menge des gemeinsam genutzten Speichers dar, der von einer Aufgabe verwendet wird.
- VIRT: Gesamter virtueller Speicher, der von der Aufgabe verwendet wird.
- BENUTZER: Benutzername des Eigentümers der Aufgabe.
- %CPU: Stellt die CPU-Auslastung dar.
- ZEIT+: CPU-Zeit, das gleiche wie „TIME“, aber mit mehr Granularität durch Hundertstelsekunden.
- SHR: Stellt die Shared Memory-Größe (KB) dar, die von einer Aufgabe verwendet wird.
- NI: Stellt einen Nice Value der Aufgabe dar. Ein negativer Nice-Wert bedeutet eine höhere Priorität, und ein positiver Nice-Wert bedeutet eine niedrigere Priorität.
- %MEM: Zeigt den Speicherverbrauch der Aufgabe an.
Beispiele:
1) Top-Befehl nach spezifischer Wiederholung verlassen: Die obere Ausgabe wird aktualisiert, bis Sie „q“ drücken. Mit dem folgenden Befehl wird der obere Befehl automatisch nach 20 Wiederholungen beendet.
top -n 10
2) Bestimmten Benutzerprozess anzeigen
top -u unixcop
hier der Benutzer mit dem Namen unixcop
3) Laufenden Prozess oben hervorheben: Drücken Sie ‘z‘ Die Option in running top zeigt den laufenden Prozess in Farbe an, was Ihnen helfen kann, den laufenden Prozess leicht zu identifizieren
4) Zeigt den absoluten Pfad der Prozesse:
Drücken Sie ‚c‘ Option beim Ausführen des Top-Befehls, wird der absolute Pfad des laufenden Pro
angezeigt5) Laufenden Prozess beenden: Sie können einen Prozess beenden, nachdem Sie die PID des Prozesses gefunden haben, indem Sie ‘k‘ drücken Option beim Ausführen des Top-Befehls, ohne das Top-Fenster zu verlassen, wie unten gezeigt.
6) Nach CPU-Auslastung sortieren: Drücken Sie (Umschalt+P) um Prozesse nach CPU-Auslastung zu sortieren.
7) Zeigt die oberste Befehlssyntax:
top -h
8) Stapelmodus: Senden Sie die Ausgabe von oben an eine Datei oder ein beliebiges anderes Programm.
top -b
9) Sicherer Modus: Top im sicheren Modus verwenden.
top -s
10) Befehlszeile: Der folgende Befehl beginnt oben mit dem letzten geschlossenen Zustand.
Top -c
11) Verzögerungszeit : Zeigt die Verzögerungszeit zwischen Bildschirmaktualisierungen an.
top -d seconds.tenths
3. htop
top command im Linux-System ist ein Befehlszeilendienstprogramm, mit dem der Benutzer die wichtigen Ressourcen des Systems oder die Prozesse des Servers interaktiv in Echtzeit überwachen kann. top ist ein neueres Programm im Vergleich zu top Befehl und bietet viele Verbesserungen gegenüber dem Befehl top. htop unterstützt die Mausbedienung, verwendet Farbe in seiner Ausgabe und gibt visuelle Hinweise auf Prozessor-, Speicher- und Swap-Nutzung. htop gibt auch vollständige Befehlszeilen für Prozesse aus und ermöglicht es, sowohl vertikal als auch horizontal für Prozesse bzw. Befehlszeilen zu scrollen.
Syntax:
htop [-dChusv]
Beispiel:
Optionen:
- -d –Verzögerung : Wird verwendet, um die Verzögerung zwischen Aktualisierungen in Zehntelsekunden anzuzeigen.
- -C –keine Farbe –keine Farbe :htop im Monochrom-Modus starten.
- -h –Hilfe : Wird verwendet, um die Hilfemeldung anzuzeigen und zu beenden.
- -u –user=BENUTZERNAME : Wird verwendet, um nur die Prozesse eines bestimmten Benutzers anzuzeigen.
htop -u qadry
- -p –pid=PID, PID… : Wird verwendet, um nur die angegebenen PIDs anzuzeigen.
- -s –Sortierschlüssel SPALTE : Nach dieser Spalte sortieren (verwenden Sie –sort-key help für eine Spaltenliste).
- -V –Version : Versionsinformationen ausgeben und beenden.
Interaktive Befehle:
- Pfeile, Bild auf, Bild ab, Pos1, Ende :Blättern Sie durch die Prozessliste.
- Leertaste :Einen Prozess markieren oder Markierung aufheben.
- Du – Tag alle Prozesse aufheben (alle mit der Leertaste hinzugefügten Tags entfernen).
- s – Prozesssystemaufrufe verfolgen.
- F1 – Hilfe
- F2 – Einrichtung
- F3 – Suchen
- F4 – Filtern:Geben Sie einen Teil einer Prozessbefehlszeile ein und es werden nur Prozesse angezeigt, deren Namen übereinstimmen.
- F5 – Baumansicht.
- F6 – Sortieren.
- F7 – Erhöhen Sie die Priorität des ausgewählten Prozesses. Dies kann nur vom Superuser durchgeführt werden.
- F8 – Verringern Sie die Priorität des ausgewählten Prozesses.
- F9 – Prozess beenden.
- F10 – Beenden.
4. lsof
Linux/Unix betrachtet alles als Datei und verwaltet Ordner. Also „Dateien oder eine Datei“ ist unter Linux/Unix sehr wichtig. Während der Arbeit in einem Linux/Unix-System werden möglicherweise mehrere Dateien und Ordner verwendet, von denen einige sichtbar sind und andere nicht.
lsof Befehl steht für Liste der geöffneten Dateien . Dieser Befehl liefert eine Liste der geöffneten Dateien. Grundsätzlich gibt es die Informationen, um herauszufinden, welche Dateien von welchem Prozess geöffnet werden. Auf einen Schlag listet es alle geöffneten Dateien in der Ausgabekonsole auf. Es kann nicht nur allgemeine reguläre Dateien auflisten, sondern es kann ein Verzeichnis, eine spezielle Blockdatei, eine gemeinsam genutzte Bibliothek, eine spezielle Zeichendatei, eine reguläre Pipe, eine benannte Pipe, einen Internet-Socket, einen UNIX-Domain-Socket und viele andere auflisten. es kann mit dem grep-Befehl kombiniert werden und kann für erweitertes Suchen und Auflisten verwendet werden.
Syntax:
lsof [option][user name]
Optionen mit Beispielen:
- Alle geöffneten Dateien auflisten: Dieser Befehl listet alle Dateien auf, die von irgendeinem Prozess im System geöffnet werden.
lsof
Hier sehen Sie Details zu geöffneten Dateien. Prozess-ID, der mit dem Prozess verbundene Benutzer, FD (Dateideskriptor), Größe der Datei, alles zusammen gibt detaillierte Informationen über die durch den Befehl geöffnete Datei, Prozess-ID, Benutzer, ihre Größe usw.
- FD repräsentiert als Dateideskriptor.
- cwd :Aktuelles Arbeitsverzeichnis.
- txt :Textdatei.
- Speicher :Speicherdatei.
- mmap :Speicherabgebildetes Gerät.
- Alle Dateien auflisten, die von einem Benutzer geöffnet wurden: Es gibt mehrere Benutzer eines Systems und jeder Benutzer hat unterschiedliche Anforderungen und verwendet dementsprechend Dateien und Geräte. Um eine Liste von Dateien zu finden, die von einem bestimmten Benutzer geöffnet wurden, ist dieser Befehl nützlich.
Syntax:
lsof -u username
Beispiel :
lsof -u qadry
In der obigen Abbildung mit dem Befehl lsof -u qadry listet alle vom Benutzer geöffneten Dateien auf. Außerdem können wir hier den Dateityp sehen und sie sind:
- DIR: Verzeichnis
- REG: Normale Datei
- CHR: Charakterspezifische Datei
- Alle Dateien auflisten, die von allen außer einem bestimmten Benutzer geöffnet werden: Mit Hilfe dieses Befehls können Sie alle Dateien auflisten, die von allen Prozessen und allen Benutzern geöffnet wurden. Aber wenn wir die Liste der Dateien finden wollen, die von allen Benutzern außer einem bestimmten Benutzer geöffnet werden, können wir Folgendes verwenden:
Syntax:
lsof -u ^root
In der angegebenen Abbildung können wir beobachten, dass keine Dateien vom Root-Benutzer geöffnet werden.
- Alle geöffneten Dateien eines bestimmten Prozesses auflisten: Dieser Befehl kann alle Dateien auflisten, die von einem bestimmten Prozess geöffnet wurden. -c gefolgt von Prozessnamen kann alle Dateien finden, die von diesem bestimmten Prozess geöffnet werden, der im Befehl genannt wird.
Syntax:
lsof -c crond
Hier können Sie beobachten, dass die Dateien und ihre Beschreibung vom Crond-Prozess geöffnet wurden.
- Alle geöffneten Dateien auflisten, die von einem bestimmten Prozess geöffnet werden: Jede Datei ist einer Prozess-ID zugeordnet. Es kann viele Dateien geben, die von einem bestimmten Prozess geöffnet werden. Durch die Verwendung von lsof -p Prozess-ID können Dateien überprüft werden, die von einem bestimmten Prozess geöffnet wurden.
Syntax:
lsof -p process ID
Beispiel :
lsof -p 2781
- Dateien, die von allen anderen PIDs geöffnet wurden: Wie die oben angegebene Abbildung zeigt, listet der Befehl die Dateien auf, die von einer bestimmten Prozess-ID geöffnet wurden. Auf die gleiche Weise können Sie die folgende Befehlsoption verwenden, um die Liste der Dateien herauszufinden, die nicht von einer bestimmten Prozess-ID geöffnet werden.
Syntax:
lsof -p ^process ID
- Übergeordnete Prozess-IDs auflisten: Es gibt eine große Anzahl von Prozessen, die in einem System ausgeführt werden, und sie haben Dateien für ihre Verwendung geöffnet. Es kann viele untergeordnete Prozesse eines Prozesses geben, und dieser Prozess kann auch als übergeordneter Prozess bezeichnet werden. Um die Liste der vom übergeordneten Prozess geöffneten Dateien herauszufinden, wird der Befehl lsof mit der Option -R verwendet .
Syntax:
lsof -R
- Dateien, die von einem Verzeichnis geöffnet werden: Es listet die Dateien auf, die von einem bestimmten Verzeichnis geöffnet werden. Es gibt Dateien sowie das Verzeichnis in einem System. Es können also neben der regulären Datei auch mehrere Dateien von einem Verzeichnis geöffnet werden.
Syntax:
lsof -D directory path
- Durch Netzwerkverbindungen geöffnete Dateien: Unser PC/System kann über verschiedene Netzwerke verbunden werden, was für eine Vielzahl von Zwecken hilfreich ist. Da wir wissen, dass unter Linux alles eine Datei ist, können wir sogar die Dateien überprüfen, die von einigen Netzwerkverbindungen im System geöffnet werden.
Syntax:
lsof -i
Beispiel:
lsof -i tcp
Hier in der Abbildung sehen wir die vom TCP-Netzwerk geöffneten Dateien. Auf die gleiche Weise können wir nach UDP usw. suchen.
Hinweis: Um mehr Details über den Befehl lsof zu erfahren, können Sie die Handbuchseite wie folgt einsehen:
man lsof