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.
- Überspringen Sie die Aufgabe vorübergehend und fahren Sie mit den nachfolgenden Guided Labs im Linux-Lernpfad fort.
- 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
psProzesse 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
qbeenden.
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
pgrepverwenden, um die PID des Prozesses zu finden, dercritical_service.shausfü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
pgrepkann 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 Skriptresource_hog.shzu 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
pkillsendet 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.shso, 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
~/projectbefinden. - 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.logum.
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
nohupsteht 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 mit2>&1umleiten.
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
psaufzulisten und zu inspizieren. - Systemressourcen in Echtzeit mit
topzu überwachen. - Wichtige Prozesse mit
pgrepzu identifizieren. - Fehlerhafte Prozesse mit
pkillsauber zu beenden. - Hintergrundjobs mit
nohupund&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!



