Grundlagen des Prozessmanagements unter Linux
- 2937
- 260
- Madleen Vater
Zielsetzung
Erfahren Sie die Grundlagen des Prozessemanagements unter Linux
Betriebssystem- und Softwareversionen
- Betriebssystem: - Alle Linux -Verteilungen
Anforderungen
- Einige in diesem Tutorial genannte Programme erfordern Root -Zugriff
Schwierigkeit
EINFACH
Konventionen
- # - Erfordert, dass gegebene Linux -Befehle entweder mit Root -Berechtigungen ausgeführt werden müssen
direkt als Stammbenutzer oder durch Verwendung vonsudo
Befehl - $ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können
Einführung
Eine der Kernaktivitäten eines Systemadministrators ist die Überwachung und Interaktion mit den auf einer Maschine ausgeführten Prozesse. In diesem Tutorial werden Sie mit der Verwendung einiger grundlegender Tools vorgestellt, mit denen Sie diese wichtige Aufgabe erfüllen können.
Der PS -Befehl
PS ist eines der grundlegenden Programme, die bei der Prozessüberwachung verwendet werden Schnappschuss
der Prozesse, die auf einer Maschine ausgeführt werden, in dem Sie den Befehl aufrufen. Lassen Sie es uns in Aktion sehen: Zuerst werden wir versuchen, es ohne Optionen auszuführen:
$ PS PID TTY TIME CMD 24424 PTS/0 00:00:00 BASH 24468 PTS/0 00:00:00 PS
Wie Sie aus der obigen Ausgabe erkennen können, werden nur zwei Prozesse angezeigt: verprügeln
mit einem PID
(Prozess ID) 24424
Und ps
selbst mit der PID 24468
. Dies liegt daran ps
Der Befehl zeigt Prozesse, die mit dem verbunden sind Uid
des Benutzer, der den Befehl gestartet hat, und des Terminals, aus dem er aufgerufen wird.
Wie man diese Einschränkung überwindet? Verwendung der -A
Option können wir machen ps
um uns alle Prozesse zu zeigen, mit Ausnahme der Sitzungsleiter
und die Prozesse, die nicht mit einem Terminal verbunden sind.
Ein Sitzungsleiter ist ein Prozess, der eine PID hat, die gleich ist Sid
(Sitzungs -ID) der Sitzung, deren Sitzung (das erste) Mitglied ist. Wenn ein Prozess erstellt wird PID
Von seinem ersten Mitglied nennen wir diesen Prozess a Sitzungsleiter
. Versuchen wir zu rennen ps
mit dem -A
Option und überprüfen Sie die Ausgabe:
$ PS-A PID TTY TIME CMD 12466 TTY1 00:00:00 GNOME-Session-B 12480 TTY1 00:00:17 GNOME-SHELL 12879 TTY1 00:00:00 XWAYLAND 12954 TTY1 00:00:00 GSD-SOUND 12955 TTY1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111). 00:00:00 GSD-WACOM 12957 TTY1 00:00:00 GSD-XSETTINGS 12961 TTY1 00:00:00 GSD-A11Y-Keyboa 12962 Tty1 00:00:00 GSD-A11Y-Settin 12965 Tty1 00:00:00 -Clipboard 12966 Tty1 00:00:03 GSD-Color 12967 Ty1 00:00:00 GSD-DATETIME 12970 TTY1 00:00:00 GSD-Housekeepin 12971 Ty1 00:00 GSD-Keyboard 12972 Tty1 00:00:00 -Media-keys 12973 TTY1 00:00:00 GSD-MOUSE 12976 TTY1 00:00:00 GSD-ORIENTIONATION […]
Die Ausgabe des Programms wurde abgeschnitten, aber Sie können leicht erkennen, dass es jetzt Prozesse enthält, die zu verschiedenen Terminals und Benutzern gehören. Die Ausgabe zeigt uns Informationen darüber PID
in der ersten Spalte, Tty
in dieser Sekunde, ZEIT
Welches ist die kumulative Zeit, die die CPU für den Prozess verbracht hat, und CMD
Welches ist der Befehl, der den Prozess gestartet hat.
Um eine noch reichere Ausgabe zu haben, können wir die hinzufügen -u
Und -X
Optionen: Ersteres sagt ps
eine Auswahl durchführen von Benutzer-ID
, Letztere weist das Programm an, auch Prozesse, die nicht mit einem Terminal verbunden sind, wie Dämonen einzuschließen:
$ PS -AUX User PID %cpu %mem vsz RSS TTY STAT START Time Command Root 1 0.0 0.2 223932 8708 ? SS Jul20 0:04/usr/lib/systemd/systemd-switched-root-system-deserialize 25 root 2 0.0 0.0 0 0 ? S Jul20 0:00 [KThreadd] Root 4 0.0 0.0 0 0 ? S< Jul20 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S< Jul20 0:00 [mm_percpu_wq] root 7 0.0 0.0 0 0 ? S Jul20 0:00 [ksoftirqd/0] root 8 0.0 0.0 0 0 ? S Jul20 0:07 [rcu_sched] root 9 0.0 0.0 0 0 ? S Jul20 0:00 [rcu_bh] root 10 0.0 0.0 0 0 ? S Jul20 0:04 [rcuos/0] root 11 0.0 0.0 0 0 ? S Jul20 0:00 [rcuob/0] root 12 0.0 0.0 0 0 ? S Jul20 0:00 [migration/0] root 13 0.0 0.0 0 0 ? S Jul20 0:00 [watchdog/0] root 14 0.0 0.0 0 0 ? S Jul20 0:00 [cpuhp/0] root 15 0.0 0.0 0 0 ? S Jul20 0:00 [cpuhp/1] root 16 0.0 0.0 0 0 ? S Jul20 0:00 [watchdog/1] root 17 0.0 0.0 0 0 ? S Jul20 0:00 [migration/1] root 18 0.0 0.0 0 0 ? S Jul20 0:00 [ksoftirqd/1] root 20 0.0 0.0 0 0 ? S< Jul20 0:00 [kworker/1:0H] root 21 0.0 0.0 0 0 ? S Jul20 0:02 [rcuos/1] root 22 0.0 0.0 0 0 ? S Jul20 0:00 [rcuob/1] root 23 0.0 0.0 0 0 ? S Jul20 0:00 [cpuhp/2] root 24 0.0 0.0 0 0 ? S Jul20 0:00 [watchdog/2] root 25 0.0 0.0 0 0 ? S Jul20 0:00 [migration/2] root 26 0.0 0.0 0 0 ? S Jul20 0:00 [ksoftirqd/2] root 28 0.0 0.0 0 0 ? S< Jul20 0:00 [kworker/2:0H] [… ] egdoc 13128 0.0 0.1 74736 5388 ? Ss Jul20 0:00 /usr/lib/systemd/systemd --user egdoc 13133 0.0 0.0 106184 420 ? S Jul20 0:00 (sd-pam) egdoc 13143 0.0 0.1 218328 3612 ? Sl Jul20 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login [… ]
Sie können sehen, dass viele neue Informationen hinzugefügt wurden. Die erste neue Spalte der Ausgabe ist %ZENTRALPROZESSOR
: Dies zeigt die CPU -Nutzung des Prozesses, der als Prozentsatz ausgedrückt wird. Für die nächste Spalte wird auch ein Prozentsatz verwendet, %Mem
, Dies zeigt den physischen Speicher auf der Maschine, die vom Prozess verwendet wird. VSZ
ist die virtuelle Speichergröße des in KIB ausgedrückten Prozesses.
Der Stat
Die Spalte verwendet einen Code, um den Prozesszustand auszudrücken. Wir werden hier nicht alle möglichen Zustände beschreiben, sondern erklären Sie einfach diejenigen, die in der obigen Ausgabe erscheinen (Sie können eine vollständige Übersicht haben, indem Sie die PS -Manpage konsultieren).
Lassen Sie uns den ersten Prozess in der Ausgabe untersuchen PID 1
, Daher ist der erste Prozess, der vom Kernel gestartet wurde. Dies macht Sinn, wir können sehen, dass es ist systemd
, Das relativ neue Linux -Init -System, das jetzt von fast allen Verteilungen übernommen wird. Erstens haben wir eine S
was zeigt, dass der Prozess im Zustand von liegt unterbrechbarer Schlaf
Das bedeutet, dass es untätig ist und aufwacht, sobald es eine Eingabe erhält. Der S
, Stattdessen sagt uns, dass der Prozess a ist Sitzungsleiter
.
Ein anderes Symbol, das nicht im ersten Raw erscheint, sondern in einigen anderen Prozessen Beschreibungen ist <
Dies zeigt an, dass der Prozess eine hohe Priorität hat und daher eine niedrige Hübsch
Wert (wir werden sehen, was ein guter Wert im relevanten Abschnitt dieses Tutorials ist). Ein l
im Stat
Spalte zeigt an, dass der Prozess multi-threaded ist und a +
Zeichen, dass es sich in der Vordergrundprozessgruppe befindet.
Schließlich haben wir in der letzten Spalte die START
Spalte, die die Zeit zeigt, die der Befehl begann.
Eine weitere schöne Option, die wir an die übergeben können ps
Befehl ist -Ö
, Welches ist die Kurzversion von --Format
. Mit dieser Option können Sie die Ausgabe durch die Verwendung von Platzhaltern ändern und angeben, welche Spalten angezeigt werden sollen. Zum Beispiel Laufen:
$ ps -ax -o%u%p%n%c
Wird uns die geben BENUTZER
Spalte zuerst (%u), gefolgt von der PID
des Prozesses (%p), durch die Ni
Spalte (%n), die die anzeigt Hübsch
Ebene und schließlich durch die BEFEHL
Spalte (%c):
Benutzer PID Ni Befehls root 1 0 systemd root 2 0 kthreadd root 4 -20 KWERKER/0: 0H Root 6 -20 mm_percpu_wq root 7 0 ksoftirqd/0 root 8 0 rcu_Sched Root 9 0 RCU_BH Root 10 0 Rcuos/0 root 11 0 rcuob /0 root 12 - Migration/0 root 13 - Watchdog/0 root 14 0 cpUHP/0 root 15 0 cpUHP/1 root 16 - Watchdog/1 Root 17 - Migration/1 Root 18 0 ksoftirqd/1 root 20 -20 KWERKER/ 1: 0H Root 21 0 rcuos/1 root 22 0 rcuob/1 root 23 0 cpUHP/2 root 24 - Watchdog/2 Root 25 - Migration/2 Root 26 0 ksoftirqd/2
Verwenden von "Top", um dynamisch mit Prozessen zu interagieren
Während ps
Gibt uns einen statischen Schnappschuss von Prozessen und deren Informationen zum Zeitpunkt des Ausführens, Spitze
Gibt uns eine dynamische Ansicht der Prozesse, die in einem bestimmten Zeitintervall aktualisiert werden, das wir sowohl beim Starten des Programms als auch interaktiv angeben können (Standard ist 3 Sekunden).
TOP zeigt uns nicht nur eine dynamische Darstellung der laufenden Prozesse an: Wir können mit ihnen und mit dem Programm selbst interagieren, indem wir einige Schlüssel verwenden. Zum Beispiel drücken B
Lassen Sie uns die Verwendung von kühnen Zeichen umschalten, D
Lassen Sie uns einen Wert eingeben, um die Verzögerungszeit zu ändern, k
Lassen Sie uns ein Signal an einen Prozess senden, indem wir für seine Aufgabe auffordern PID
und für die Signal
Code, mit Sigterm
Standard sein.
Ändern Sie die Priorität von Prozessen mit Nizza und Renice
Wie wir bereits gesehen haben, hat jeder Prozess einen Priorität
Zugewiesen, was angibt, wie viel der Prozess auf andere Prozesse warten muss, um Ressourcen frei zu haben, bevor er darauf zugreifen kann. Diese Priorität kann mit einem Wert angegeben werden -20
Zu 19
. Je weniger der Wert ist, desto höchste Priorität des Prozesses. Dies kann zunächst kontraintuitiv erscheinen, aber sehen Sie es so: Je schöner der Prozess für andere Prozesse ist, desto mehr übertreffen sie es beim Zugriff auf die Ressourcen.
Aber wie können wir die Priorität eines Prozesses festlegen?? Wir können die verwenden Hübsch
Programm zur Erfüllung der Aufgabe. Angenommen, Sie möchten ein Skript mit dem niedrigstmöglichen Prioritätswert ausführen: Sie würden es so vorbereiten:
$ nice -n 19 ./Skript.Sch
Sie können auch die Priorität eines Programms ändern, das bereits durch den Einsatz von durchgeführt wird Renice
es kennt PID
:
# Renice -n 15 PID
Wobei PID die Prozess -ID des Programms ist. Denken Sie daran, dass die Renice
Der Befehl muss mit Stammberechtigungen ausgeführt werden.
Senden Sie Signale an Prozesse mit den Kill- und Killall -Befehlen
Wir können den Befehl Kill verwenden, um eine zu senden Signal
zu einem Prozess, der uns gehört, oder zu jedem Prozess, wenn wir Wurzelberechtigungen haben. Die verschiedenen Signale, die wir senden können, werden durch eine Nummer identifiziert: Wir können diese Korrespondenzen leicht sehen, indem wir den Kill -Befehl mit dem ausführen -l
Möglichkeit:
$ Kill -l 1) seufz 2) sigint 3) sigquit 4) sigill 5) sigtrap 6) sigabrt 7) sigbus 8) sigfpe 9) sigkill 10) sigusr1 11) sigsegv 12) sigusr2 13) sigalrm 15) Sigalmed 16) SigmaMper 16) ) Sigstkflt 17) Sigchld 18) Sigcont 19) Sigstop 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGULL 35) Sigrtmin+1 36) Sigrtmin+2 37) Sigrtmin+3 38) Sigrtmin+4 39) Sigrtmin+5 40) Sigrtmin+6 41) Sigrtmin+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 45) Sigrtmin+11 46) Sigrtmin+12 47) Sigrtmin+13 48) Sigrtmin+14 49) Sigrtmin+15 50) Sigrtmax-14 51) Sigrtmax-13 52) Sigrtmax-12 53) Sigrtmax-11 54) Sigrtmax-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-12 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX-SIGRTMAX-SIGRTMAX
Wenn keine Option an die übergeben wird töten
Befehl, standardmäßig sendet er eine Sigterm
Signal auf den angegebenen Prozess, auf den letzteres auf verschiedene Weise reagieren könnte: Es kann sofort anhalten, versuchen.
Um das zu sendende Signal mit Kill anzugeben, führen wir den Befehl aus, gefolgt von einem Armaturenbrett und der Anzahl des zugesandten Signals. Zum Beispiel um a zu führen Sigkill
Signal, wir sollten ausführen:
Töte -9 PID
Der Sigkill
Signal, im Gegensatz zu Sigterm
kann nicht vom Prozess gefangen werden, der nicht reagieren kann: Es wird einfach sofort beendet.
Ein weiteres Signal, das Sie oft sehen werden, ist Sigint
Welches ist das Signal, das auf Tastatur Interrupt (Strg-C) gesendet wird. Es versucht auch, den Prozess auf anmutig zu beenden und kann vom Prozess ignoriert werden. Sigstop
Und Sigcont
wird jeweils die Ausführung eines Prozesses suspendieren und fortsetzen: erstere, wie Sigkill
kann nicht gefangen oder ignoriert werden. Für eine vollständige Liste und Beschreibung der Signale können Sie das Handbuch für eine Handbuch konsultieren Signal (7)
Betrieb:
Mann 7 Signal
Der alle töten
Programm hat den gleichen Zweck wie töten
, und wie Kill sendet eine Sigterm
Signal, wenn kein anderer angegeben ist (diesmal mit dem --Signal
Option), aber anstatt einen Prozess nach seinem zu verweisen PID
, Es wird dies mit dem Befehlsnamen tun und alle Prozesse, die unter demselben ausgeführt werden, effektiv getötet.
Verwandte Linux -Tutorials:
- Dinge zu installieren auf Ubuntu 20.04
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- Bestes Systemüberwachungstool für Linux
- Ubuntu 20.04 Systemüberwachung mit Conky -Widgets
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Linux -Konfigurationsdateien: Top 30 am wichtigsten
- Linux -Leistungsoptimierung: Tools und Techniken
- Ubuntu 22.04 Systemüberwachung mit Conky -Widgets
- Kann Linux Viren bekommen?? Erforschung der Verwundbarkeit von Linux…
- Linux -Download
- « So generieren Sie zufällige Word -Passphrase für Bitcoin -Brieftasche auf dem Linux -System
- Bewahren Sie Ihre /zu Hause mit Cron -Backups sicher auf »