Grundlegendes Prozessmanagement und Analyse der Umgebungszusammensetzung bei Linux-Betrieb und -Wartung

Grundlegendes Prozessmanagement und Analyse der Umgebungszusammensetzung bei Linux-Betrieb und -Wartung

1. Grundlegender Überblick über den Prozess

Ein Prozess ist eine laufende Instanz eines gestarteten ausführbaren Programms.

Die mit Nummern benannten Verzeichnisse unter dem Verzeichnis /proc stellen jeweils einen Prozess dar und speichern die Attributinformationen des Prozesses.

Die PID jedes Prozesses ist eindeutig. Selbst wenn der Prozess beendet wird, belegen andere Prozesse seine PID nicht.

2. Komponenten eines Prozesses

  • Der Adressraum des zugewiesenen Speichers
  • Sicherheitsattribute, einschließlich Eigentümeranmeldeinformationen und Berechtigungen
  • Ein oder mehrere Threads zur Ausführung des Programmcodes
  • Prozessstatus

3. Prozessumgebung

  • Lokale und globale Variablen
  • Aktueller Planungskontext
  • Zugewiesene Systemressourcen wie Dateideskriptoren und Netzwerkports

4. Prozessstatus

Logo Vom Kernel definierte Statusnamen und -beschreibungen
R TASK_RUNNING: Der Prozess wird auf der CPU ausgeführt oder wartet auf die Ausführung. Im Status „Running“ (oder „Runnable“) kann ein Prozess eine Benutzerroutine oder eine Kernelroutine (Systemaufruf) ausführen oder sich in der Warteschlange befinden und bereit zum
S TASK_INTERRUPTIBLE: Der Prozess schläft und wartet auf eine Bedingung: Hardwareanforderung, Zugriff auf Systemressourcen oder Signal. Wenn ein Ereignis oder Signal diese Bedingung erfüllt, wird der Prozess wieder ausgeführt.
D TASK_UNINTERRUPTIBLE: Dieser Prozess schläft ebenfalls, reagiert jedoch im Gegensatz zum S-Zustand nicht auf gesendete Signale. Nur unter bestimmten Bedingungen verwenden, wenn eine Prozessunterbrechung zu unerwarteten Gerätezuständen führen könnte
K TASK_KILLABLE: Der Prozess befindet sich in einem Schlafzustand, der dem nicht unterbrechungsfreien Zustand D entspricht, jedoch so geändert ist, dass die wartende Aufgabe durch Reagieren auf ein Signal unterbrochen (vollständig beendet) werden kann. Dienstprogramme zeigen unterbrechbare Prozesse normalerweise als im Zustand D befindlich an.
T TASK_STOPPED: Der Prozess wurde gestoppt (angehalten), normalerweise durch ein Signal des Benutzers oder eines anderen Prozesses. Der Prozess kann durch ein weiteres Signal in den laufenden Zustand zurückversetzt und die Ausführung fortgesetzt werden (Wiederherstellung).
T TASK_TRACED: Der zu debuggende Prozess wird ebenfalls vorübergehend angehalten und erhält das gleiche T-Statusflag.
Z EXIT_ZOMBIE: Der untergeordnete Prozess signalisiert dem übergeordneten Prozess, wenn er beendet wird. Alle Ressourcen außer der Prozessidentität (PID) werden freigegeben
X EXIT_DEAD: Wenn der übergeordnete Prozess die verbleibenden Strukturen des untergeordneten Prozesses bereinigt (erwirbt), wird der Prozess nun sauber freigegeben. Dieser Status wird in Dienstprogrammen zur Prozessauflistung nie angezeigt.
< Prozess mit hoher Priorität
N Prozess mit niedriger Priorität
+ Prozesse in der Vordergrundprozessgruppe
m Multithread-Prozess
S Sitzungsprozess, Kopfprozess

5. Prozesspriorität

  • <0-139>: Je kleiner die Zahl, desto höher die Priorität!
  • <0-99>: Echtzeitpriorität, Kernelanpassung
  • <100-139>: statische Priorität, benutzersteuerbar

6. Befehle zur Prozessverwaltung

Mit dem Befehl ps werden die aktuellen Prozesse aufgelistet. Kann detaillierte Prozessinformationen anzeigen

[root@localhost ~]# ps -e
    PID TTY ZEIT CMD
      1 ? 00:00:02 systemd
      2 ? 00:00:00 kthreadd


[root@localhost ~]# ps aux
BENUTZER PID %CPU %MEM VSZ RSS TTY STAT STARTZEIT BEFEHL
root 1 0.0 0.6 179032 13504 ? Ss Nov03 0:02 /usr/lib/syst
Wurzel 2 0,0 0,0 0 0 ? S Nov03 0:00 [kthreadd]
Wurzel 3 0,0 0,0 0 0 ? I< Nov03 0:00 [rcu_gp]
Wurzel 4 0,0 0,0 0 0 ? I< Nov03 0:00 [rcu_par_gp]
Wurzel 6 0,0 0,0 0 0 ? I< Nov03 0:00 [kworker/0:0H
Wurzel 8 0,0 0,0 0 0 ? I< Nov03 0:00 [mm_percpu_wq
Wurzel 9 0,0 0,0 0 0 ? S Nov03 0:00 [ksoftirqd/0]
Wurzel 10 0,0 0,0 0 0 ? R Nov03 0:00 [rcu_sched]
Wurzel 11 0,0 0,0 0 0 ? S Nov03 0:00 [Migration/0]
Wurzel 12 0,0 0,0 0 0 ? S Nov03 0:00 [Watchdog/0]
Wurzel 13 0,0 0,0 0 0 ? S Nov03 0:00 [cpuhp/0]
Wurzel 15 0,0 0,0 0 0 ? S Nov03 0:00 [kdevtmpfs]
Wurzel 16 0,0 0,0 0 0 ? I< Nov03 0:00 [netns]
Wurzel 17 0,0 0,0 0 0 ? S Nov03 0:00 [kauditd]
Wurzel 18 0,0 0,0 0 0 ? S Nov03 0:00 [khungtaskd]
Wurzel 19 0,0 0,0 0 0 ? S Nov03 0:00 [oom_reaper]
Wurzel 20 0,0 0,0 0 0 ? I< Nov03 0:00 [Rückschreiben]
Wurzel 21 0,0 0,0 0 0 ? S Nov03 0:00 [kcompactd0]
Wurzel 22 0,0 0,0 0 0 ? SN Nov03 0:00 [ksmd]
root 23 0.0 0.0 0 0 ? SN Nov03 0:00 [große Seitenaufrufe]
root 24 0.0 0.0 0 0 ? I< Nov03 0:00 [Krypto]
Wurzel 25 0,0 0,0 0 0 ? I< Nov03 0:00 [kintegrityd]
Wurzel 26 0,0 0,0 0 0 ? I< Nov03 0:00 [kblockd]
Wurzel 27 0,0 0,0 0 0 ? I< Nov03 0:00 [tpm_dev_wq]
Wurzel 28 0,0 0,0 0 0 ? I< Nov03 0:00 [md]
Wurzel 29 0,0 0,0 0 0 ? I< Nov03 0:00 [edac-poller]
root 30 0,0 0,0 0 0 ? S Nov03 0:00 [watchdogd]
Wurzel 47 0,0 0,0 0 0 ? S Nov03 0:00 [kswapd0]
Wurzel 140 0,0 0,0 0 0 ? I< Nov03 0:00 [kthrotld]
root 141 0.0 0.0 0 0 ? S Nov03 0:00 [irq/24-pcieh
root 142 0.0 0.0 0 0 ? S Nov03 0:00 [irq/25-pcieh
root 143 0.0 0.0 0 0 ? S Nov03 0:00 [irq/26-pcieh
root 144 0.0 0.0 0 0 ? S Nov03 0:00 [irq/27-pcieh
Wurzel 145 0,0 0,0 0 0 ? S Nov03   
[root@localhost ~]# ps -ef
UID PID PPID C STIME TTY ZEIT CMD
root 1 0 0 Nov03 ? 00:00:02 /usr/lib/systemd/systemd --s
root 2 0 0 Nov03 ? 00:00:00 [kthreadd]
Wurzel 3 2 0 Nov03 ? 00:00:00 [rcu_gp]
Wurzel 4 2 0 Nov03 ? 00:00:00 [rcu_par_gp]
Wurzel 6 2 0 Nov03 ? 00:00:00 [kworker/0:0H-k

7.vmstat

Befehl zur Anzeige des Status des virtuellen Speichers

vmstat 1000 // gibt an, dass die Daten alle 1000 Sekunden aktualisiert werden
vmstat 1000 5 //Alle 1000 Sekunden aktualisieren und nach 5-maliger Aktualisierung beenden

[root@localhost ~]# vmstat 1000
Prozeduren:
    r (running) // gibt die Länge der Warteschlange an, die auf die Ausführung wartet, d. h. die Anzahl der Prozesse, die auf die Ausführung warten. b (block) // gibt die Länge der blockierenden Warteschlange an, d. h. die Anzahl der Prozesse im unterbrechungsfreien Ruhezustandsspeicher:
    swpd //Gesamtmenge des verwendeten Swap-Speichers frei //Gesamtmenge des freien physischen Speicherpuffers //Gesamtmenge des für den Puffer-Cache verwendeten Speichers //Gesamtmenge des für den Cache-Swap verwendeten Speichers:
    si (Swap In) // Gibt an, wie viele Seiten vom physischen Speicher in den Swap-Speicher ausgelagert werden, d. h. die Datenrate, mit der Daten in den Swap-Speicher gelangen (kb/s).
    so (Swap Out) // Gibt an, wie viele Seiten aus dem Swap-Speicher in den physischen Speicher ausgelagert werden, d. h. die Datenrate, mit der die Daten den Swap-Speicher verlassen (kb/s)
io:
    bi (Block in) //Gibt an, wie viele Festplattenblöcke in den Speicher geladen werden, d. h. die Geschwindigkeit, mit der Daten vom Blockgerät in das System gelesen werden (kb/s)
    bo (Block Out) // Gibt an, wie viele Festplattenblöcke vom Speicher auf die Festplatte synchronisiert wurden, d. h. die Geschwindigkeit, mit der Daten auf dem Blockgerät gespeichert werden (kb/s).
System:
    in (Interrupts) // gibt die Anzahl der Interrupts an, d. h. die Interrupt-Rate (kb/s)
    cs (Kontextwechsel) // gibt die Anzahl der Kontextwechsel an, d. h. die Prozesswechselrate (kb/s)
CPU:
    us // steht für Benutzerspeicher sy // steht für Kernelspeicher id // steht für den Prozentsatz der Leerlaufzeit wa // steht für den Prozentsatz der Zeit, die mit Warten auf die Fertigstellung von IO verbracht wird st // steht für stehlen, die Zeit, die durch Virtualisierungstechnologie gestohlen wird (wie etwa das Ausführen einer virtuellen Maschine)

8. Hintergrundjob läuft

// Durch Hinzufügen eines &-Symbols nach dem Befehl wird ein Hintergrundjob generiert [root@localhost ~]# sleep 1000 &
[1] 1400
//Mit dem Befehl jobs werden alle aktuellen Hintergrundjobs angezeigt [root@localhost ~]# jobs
[1]+ Laufender Schlaf 1000 &
//Mit dem Befehl fg werden Hintergrundjobs in den Vordergrund übertragen [root@localhost ~]# fg
//Wenn nur ein Hintergrundjob vorhanden ist, verwenden Sie den Befehl fg direkt ohne Parameter, um den Hintergrundjob in den Vordergrund zu bringen. Wenn jedoch mehrere Jobs vorhanden sind, müssen Sie %+Jobnummer folgen lassen. Dabei handelt es sich um die Nummer, die im obigen Befehlsausführungsergebnis in [] eingeschlossen ist.
[root@localhost ~]# Arbeitsplätze
[1]- Ausführen von sleep 1000 &
[2]+ Laufender Schlaf 500 &
[root@localhost ~]# fg %1
//Verwenden Sie Strg+Z, um den Vordergrundprozess in den Hintergrund zu senden. Der Job wird zu diesem Zeitpunkt gestoppt. [root@localhost ~]# fg %1
Schlaf 1000
^Z
[1]+ Schlaf gestoppt 1000
//Verwenden Sie den bg-Befehl + Jobnummer, um den gestoppten Hintergrundjob neu zu starten [root@localhost ~]# bg %1
[1]+ Schlaf 1000 &
[root@localhost ~]# Arbeitsplätze
[1]- Ausführen von sleep 1000 &
[2]+ Laufender Schlaf 500 &
//kill plus die Jobnummer kann den angegebenen Job manuell beenden [root@localhost ~]# jobs
[1]- Ausführen von sleep 1000 &
[2]+ Laufender Schlaf 500 &
[root@localhost ~]# %1 töten
[1]- Beendet Schlaf 1000
[root@localhost ~]# Arbeitsplätze
[2]+ Laufender Schlaf 500 &
//Das Ergebnis des Job-Befehls + //Der Befehl ist die Standardoperation des Jobs - //Der Befehl ist die zweite Standardoperation des Jobs

Oben finden Sie detaillierte Informationen zum grundlegenden Prozessmanagement und zur Umgebungszusammensetzungsanalyse für Betrieb und Wartung von Linux. Weitere Informationen zum Prozessmanagement und zur Umgebungszusammensetzung von Linux finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Tutorial zur Bedienung und Wartung von Linux, grundlegende Swap-Partition und LVM-Verwaltung
  • Linux-Betrieb und -Wartung – Tutorial zur grundlegenden Datenträgerverwaltung
  • Linux-Betrieb und -Wartung, grundlegendes Prozessmanagement, Echtzeitüberwachung und -steuerung
  • Grundlagen zu Betrieb und Wartung unter Linux - Tutorial zu statischen httpd-Webseiten

<<:  Implementierung einer Login-Seite basierend auf layui

>>:  Zusammenfassung der Dinge, auf die Sie in der Fußzeile einer Webseite achten sollten

Artikel empfehlen

HTML-Grundlagen_Allgemeine Tags, allgemeine Tags und Tabellen

Teil 1 HTML <html> – Start-Tag <Kopf>...

Einige Erfahrung im Aufbau des React Native-Projektframeworks

React Native ist ein plattformübergreifendes Fram...

CSS-Implementierungscode für die Textausrichtung

Beim Erstellen von Formularen kommt es häufig vor...

So verwenden Sie Webpack und Rollup zum Verpacken von Komponentenbibliotheken

Vorwort Ich habe zuvor eine Komponente im Ladesti...

Implementierung des MySQL Shell import_table-Datenimports

Inhaltsverzeichnis 1. Einführung in import_table ...

Implementierung der MySQL-Konfiguration SSL-Zertifikat-Login

Inhaltsverzeichnis Vorwort 1. MySQL ermöglicht SS...

Gängige Master-Slave-Replikationsarchitekturen in MySQL 4

Inhaltsverzeichnis Replikationsarchitektur mit ei...

Vite+Electron zum schnellen Erstellen von VUE3-Desktopanwendungen

Inhaltsverzeichnis 1. Einleitung 2. Erstellen Sie...

Analyse von MySQL-Latenzproblemen und Datenlöschungsstrategieprozess

Inhaltsverzeichnis 1. MySQL-Replikationsprozess 2...