TAG 06: Der Prozess-Wächter

LinuxBeginner
Jetzt üben

Einführung

Willkommen, Junior-Systemadministrator! Es ist ein geschäftiger Montagmorgen bei „LabEx“ und gerade ist ein kritischer Alarm eingegangen: Der Hauptanwendungsserver ist extrem langsam, was alle Benutzer beeinträchtigt. Die erfahrenen Administratoren sind in einer Notfallsitzung gebunden, daher liegt es an Ihnen, die Ursache zu untersuchen und das System zu stabilisieren.

Dies ist Ihre Chance zu glänzen. Ihre Mission ist es, in die Kommandozeile des Servers einzutauchen, das Problem durch die Inspektion der laufenden Prozesse zu diagnostizieren, alle Ressourcenfresser unschädlich zu machen und sicherzustellen, dass wichtige Dienste betriebsbereit bleiben. Am Ende dieser Herausforderung werden Sie bewiesen haben, dass Sie eine Live-Linux-Umgebung unter Druck verwalten können – eine Kernkompetenz für jeden Systemadministrator.

Wichtiger Hinweis
Die folgenden Aufgaben können über den Umfang des Kurses Quick Start with Linux hinausgehen.
Falls Sie während der Herausforderung auf Schwierigkeiten stoßen:
  1. Überspringen Sie die Aufgabe vorübergehend und fahren Sie mit den nachfolgenden Guided Labs im Linux-Lernpfad fort.
  2. Diskutieren Sie mit Labby oder sehen Sie sich die Lösung an.

Aktive Systemprozesse auflisten

Ihr erster Schritt als Prozess-Wächter besteht darin, sich ein vollständiges Bild davon zu machen, was derzeit auf dem Server läuft. Eine statische Momentaufnahme aller aktiven Prozesse hilft Ihnen, die Untersuchung zu beginnen und Ungewöhnliches zu identifizieren.

Aufgaben

  • Verwenden Sie einen einzigen Befehl, um eine detaillierte Liste aller auf dem System laufenden Prozesse zu erstellen.

Anforderungen

  • Der Befehl muss die Prozesse aller Benutzer anzeigen, nicht nur Ihre eigenen.
  • Das Ausgabeformat sollte benutzerorientiert sein und Details wie den Besitzer des Prozesses, die CPU-/Speicherauslastung und den vollständigen Befehl, der ihn gestartet hat, enthalten.

Beispiele

Nach Ausführung des Befehls sollten Sie eine Ausgabe ähnlich dieser sehen:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 169848  9064 ?        Ss   08:30   0:02 /sbin/init
labex     1234  0.0  0.0   2324   564 pts/0    S+   08:35   0:00 bash /home/labex/project/resource_hog.sh
labex     1235  0.0  0.0   2324   564 ?        S    08:35   0:00 bash /home/labex/project/critical_service.sh
...

Die Ausgabe zeigt mehrere Prozesse mit Spalten für Benutzer, Prozess-ID, CPU-Auslastung, Speicherauslastung und den Startbefehl.

Hinweise

  • Der gebräuchlichste Befehl für diese Aufgabe ist ps.
  • Überlegen Sie, welche Optionen für den Befehl ps Prozesse für alle Benutzer in einem user-freundlichen Format anzeigen und auch Prozesse einschließen, die nicht an ein Terminal (x) gebunden sind.

Überwachung der Prozess-Ressourcennutzung

Die statische Liste von ps war ein guter Anfang, aber die Serverlast ändert sich sekündlich. Sie benötigen eine Live-Ansicht, um zu sehen, welcher Prozess aktiv die Verlangsamung verursacht. Es ist an der Zeit, ein leistungsfähigeres Überwachungswerkzeug einzusetzen.

Aufgaben

  • Starten Sie ein interaktives Kommandozeilen-Dienstprogramm, um Systemprozesse und deren Ressourcennutzung in Echtzeit zu überwachen.
  • Identifizieren Sie den Namen des Skripts, das die meiste CPU-Leistung verbraucht.

Anforderungen

  • Sie müssen ein Werkzeug verwenden, das eine kontinuierlich aktualisierte Echtzeitansicht der Systemprozesse bietet.
  • Das Werkzeug sollte Prozesse standardmäßig nach CPU-Auslastung sortieren.
  • Sobald Sie den Hauptverursacher identifiziert haben, beenden Sie das Werkzeug, um mit dem nächsten Schritt fortzufahren.

Beispiele

Wenn Sie das Überwachungswerkzeug starten, sollten Sie eine interaktive Anzeige sehen, die sich automatisch aktualisiert, etwa so:

top - 09:15:30 up  1:45,  1 user,  load average: 1.50, 1.20, 0.85
Tasks: 105 total,   2 running, 103 sleeping,   0 stopped,   0 zombie
%Cpu(s): 45.0 us,  5.0 sy,  0.0 ni, 50.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   2048.0 total,    850.4 free,    950.2 used,    247.4 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used,      0.0 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1234 labex     20   0   12884   1564   1320 R  95.0   0.1   2:15.30 bash /home/labex/project/resource_hog.sh
 1235 labex     20   0   12884   1564   1320 S   0.0   0.1   0:00.00 bash /home/labex/project/critical_service.sh
    1 root      20   0  169848   9064   6868 S   0.0   0.4   0:02.15 systemd
...

Die Anzeige zeigt oben Systemstatistiken und darunter eine nach CPU-Auslastung sortierte Liste der Prozesse, wobei der ressourcenintensivste Prozess ganz oben steht.

Hinweise

  • Dieser beliebte Befehl wird oft als der „Task-Manager“ der Linux-Welt bezeichnet.
  • Sie können dieses interaktive Werkzeug durch Drücken der Taste q beenden.

Identifizierung wichtiger Prozesse

Sie haben den Übeltäter gefunden: resource_hog.sh. Ein guter Systemadministrator beendet jedoch nicht einfach wahllos Prozesse. Sie haben auch bemerkt, dass critical_service.sh läuft. Bevor Sie Maßnahmen gegen den Ressourcenfresser ergreifen, sollten Sie alle wichtigen Prozesse auf dem System identifizieren und verstehen.

Aufgaben

  • Finden Sie die Prozess-ID (PID) des Skripts critical_service.sh.
  • Überprüfen Sie, ob der kritische Dienst ordnungsgemäß läuft.

Anforderungen

  • Sie müssen den Befehl pgrep verwenden, um die PID des Prozesses zu finden, der critical_service.sh ausführt.
  • Der Befehl sollte den laufenden Prozess erfolgreich lokalisieren und seine PID anzeigen.

Beispiele

Nachdem Sie die PID mit pgrep gefunden haben, sollten Sie eine Ausgabe wie diese sehen:

1235

Diese Zahl (1235 in diesem Beispiel) ist die Prozess-ID des kritischen Dienstes.

Sie können die Prozessdetails wie folgt überprüfen:

ps -p 1235 -o pid,ppid,cmd

Dies sollte eine Ausgabe ähnlich der folgenden liefern:

PID PPID CMD
1235 1 /bin/bash /home/labex/project/critical_service.sh

Hinweise

  • pgrep kann eine PID basierend auf einem Prozessnamen finden.
  • Verwenden Sie pgrep -f, um die gesamte Befehlszeile abzugleichen.

Beenden eines fehlerhaften Prozesses

Nachdem Sie die wichtigsten Prozesse identifiziert haben, ist es an der Zeit, sich um resource_hog.sh zu kümmern, das den Server verlangsamt hat. Sie müssen diesen Prozess beenden, um den normalen Betrieb wiederherzustellen.

Aufgaben

  • Beenden Sie den Prozess resource_hog.sh.

Anforderungen

  • Sie müssen einen Befehl verwenden, der einen Prozess anhand seines Namens beenden kann, ohne vorher manuell die PID suchen zu müssen.
  • Verwenden Sie den Befehl pkill, um das Skript resource_hog.sh zu stoppen.

Beispiele

Um zu überprüfen, ob der Prozess beendet wurde, können Sie anschließend die Prozessliste kontrollieren. Vor dem Beenden sehen Sie möglicherweise:

labex 1234 95.0 0.0 2324 564 pts/0 R+ 09:15 5:00 bash /home/labex/project/resource_hog.sh

Nach erfolgreicher Beendigung sollte derselbe Prüfbefehl keine passenden Prozesse mehr anzeigen (außer dem grep-Befehl selbst):

labex 2345 0.0 0.0 2324 564 pts/0 S+ 09:20 0:00 grep resource_hog

Hinweise

  • Der Befehl pkill sendet ein Beendigungssignal an Prozesse basierend auf ihrem Namen.
  • Nach der Ausführung des Befehls können Sie mit ps aux | grep resource_hog überprüfen, ob der Prozess tatsächlich nicht mehr läuft.

Starten und Verwalten von Hintergrundprozessen

Der Server läuft wieder stabil! Ausgezeichnete Arbeit. Gerade als Sie eine Pause machen wollen, schickt Ihnen ein Entwickler eine Nachricht. Er bittet Sie, ein lang laufendes Skript namens data_processor.sh auf dem Server auszuführen. Sie können Ihre Terminal-Sitzung nicht stundenlang offen halten, nur um auf dieses Skript zu warten. Sie müssen es im Hintergrund ausführen, damit es auch nach dem Abmelden weiterläuft.

Aufgaben

  • Starten Sie das Skript data_processor.sh so, dass es im Hintergrund läuft und immun gegen Verbindungsabbrüche ist (d. h. es stoppt nicht, wenn Sie Ihr Terminal schließen).

Anforderungen

  • Sie müssen sich im Verzeichnis ~/project befinden.
  • Verwenden Sie den Befehl nohup, um das Skript auszuführen.
  • Verwenden Sie den Operator &, um den Prozess in den Hintergrund zu schicken.
  • Leiten Sie alle Ausgaben (sowohl Standardausgabe als auch Standardfehler) des Skripts in eine Datei namens processor.log um.

Beispiele

Nach dem erfolgreichen Start des Skripts im Hintergrund sollten Sie eine Ausgabe ähnlich dieser sehen:

[1] 3456
nohup: ignoring input and appending output to 'processor.log'

Die Angabe [1] 3456 zeigt die Jobnummer und die Prozess-ID an. Sie können den Lauf des Skripts durch Überprüfen der Logdatei bestätigen:

cat processor.log

Dies könnte eine Ausgabe wie diese zeigen:

Starting data processing at Mon Sep 11 10:30:00 UTC 2025

Und Sie können bestätigen, dass der Prozess noch aktiv ist:

ps aux | grep data_processor

Dies sollte zeigen, dass der Hintergrundprozess aktiv ist.

Hinweise

  • Der Befehl nohup steht für „no hang up“ (nicht auflegen).
  • Das Symbol & am Ende eines Befehls weist die Shell an, diesen als Hintergrundjob auszuführen.
  • Sie können die Standardausgabe mit > und den Standardfehler mit 2>&1 umleiten.

Zusammenfassung

Herzlichen Glückwunsch, Administrator! Sie haben ein kritisches Performance-Problem des Servers erfolgreich gelöst und Ihre Kompetenz im Linux-Prozessmanagement unter Beweis gestellt. Der Server läuft stabil, kritische Dienste sind priorisiert und lang laufende Aufgaben arbeiten zuverlässig im Hintergrund.

In dieser Herausforderung haben Sie bewiesen, dass Sie in der Lage sind:

  • Alle laufenden Prozesse mit ps aufzulisten und zu inspizieren.
  • Systemressourcen in Echtzeit mit top zu überwachen.
  • Wichtige Prozesse mit pgrep zu identifizieren.
  • Fehlerhafte Prozesse mit pkill sauber zu beenden.
  • Hintergrundjobs mit nohup und & zu starten und zu verwalten, sodass sie auch nach dem Abmelden bestehen bleiben.

Dies sind fundamentale und wertvolle Fähigkeiten, die für jede Rolle in der Systemadministration, im DevOps-Bereich oder in der Backend-Entwicklung unerlässlich sind. Sie haben eine potenzielle Krise in eine Gelegenheit verwandelt, Ihr Fachwissen zu zeigen. Gut gemacht!

✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben✨ Lösung prüfen und üben