Prozesse und Protokolle in Kali verwalten

LinuxBeginner
Jetzt üben

Einführung

Ein Sicherheitsbefehl kann weiterlaufen, obwohl seine nützliche Arbeit zum Stillstand gekommen ist. Bevor du etwas stoppst, musst du den richtigen Prozess identifizieren und verstehen, welche andere Aktivität verfügbar bleiben muss.

Dieses Lab stellt harmlose Übungsprozesse und ein Anwendungsprotokoll bereit. Du prüfst Prozessidentitäten, verwaltest einen Terminaljob, stoppst einen ausgewählten Prozess und extrahierst seine Diagnosemeldung, ohne Plattformdienste anzutasten.

Prozesse prüfen und einen Terminaljob verwalten

In diesem Schritt prüfst du laufende Prozesse und vergleichst Terminalarbeit im Vorder- und Hintergrund.

Öffne Kali und wähle den gemeinsamen Arbeitsbereich:

kali
cd /home/labex/project

Ein Prozess ist ein laufendes Programm mit Prozess-ID (PID) und Eigentümer. ps zeigt eine Momentaufnahme. Die Option -e wählt alle Prozesse aus, -o die anzuzeigenden Felder:

ps -eo pid,user,args

Suche die vorbereiteten Python-Übungsprozesse und ihren Eigentümer kali. Ignoriere unbeteiligte Plattform- und Containerprozesse.

top aktualisiert sich normalerweise fortlaufend. -b wählt eine ausgebbare Stapelansicht, -n 1 beschränkt sie auf eine Aktualisierung:

top -b -n 1

Das zeigt eine Ressourcenaufnahme, statt dich in einer interaktiven Anzeige zu belassen. PIDs und Ressourcenwerte variieren.

Ein Vordergrundbefehl belegt das Terminal bis zu seinem Ende. sleep wartet eine Anzahl Sekunden ohne Ausgabe. Starte eine absichtlich lange Wartezeit:

sleep 30

Drücke Ctrl+C, um diesen Vordergrundbefehl zu unterbrechen und zur Eingabeaufforderung zurückzukehren. Ctrl+C hilft, den Befehl zu stoppen, der gerade dein Terminal belegt.

Ein abschließendes & startet einen Befehl im Hintergrund, sodass die Shell sofort weitere Befehle annimmt. Starte einen entbehrlichen Timer:

sleep 300 &

Die Shell gibt eine Jobnummer wie [1] und eine PID aus. jobs -l listet die Hintergrundjobs dieser Shell samt PIDs auf:

jobs -l

Du solltest den Job sleep 300 laufen sehen. Lasse ihn für die Prüfung dieses Schritts aktiv. Halte für den nächsten Schritt dasselbe Terminal offen; Jobnummern gehören zu dieser Shell-Sitzung.

Nur den festgefahrenen Prozess stoppen und sein Protokoll lesen

In diesem Schritt stoppst du einen ausgewählten Übungsprozess, erhältst einen anderen und speicherst die relevanten Fehlerzeilen.

Stoppe in derselben Kali-Shell den entbehrlichen Hintergrundtimer. kill sendet ein Signal; sein standardmäßiges Beendigungssignal fordert den Prozess zum Beenden auf. Der Jobverweis %1 bezeichnet den ersten in dieser neuen Shell erstellten Job:

kill %1

Die Shell kann eine Beendigungsmeldung ausgeben. Bestimme bei einem Prozess, der nicht als einer deiner Shell-Jobs gestartet wurde, zuerst die PID. pgrep -a zeigt PID und vollständige Befehlszeile der Treffer; -f gleicht die vollständige Befehlszeile ab:

pgrep -af stalled-worker.py

Der relevante Befehl ist python3 /opt/labex/stalled-worker.py. Dieser harmlose Übungsprozess wartet unbegrenzt. Der separate Prozess training-heartbeat.py muss weiterlaufen.

Du kannst eine gefundene PID mit Befehlsersetzung an kill übergeben. $(...) führt den inneren Befehl aus und setzt dessen Ausgabe ein; doppelte Anführungszeichen halten sie als ein Argument zusammen. Die Anker ^ und $ gleichen den gesamten erwarteten Befehl ab statt eines breiteren Teilnamens. Stoppe nur genau diesen Prozess:

kill "$(pgrep -f '^python3 /opt/labex/stalled-worker.py$')"

Führe das einmal aus. Nach dem Prozessende findet eine Wiederholung keine PID. Der Befehl sollte ohne Ausgabe zurückkehren. Bestätige, dass der zu erhaltende Prozess noch vorhanden ist:

pgrep -af training-heartbeat.py

Seine PID kann variieren, sein Befehlspfad sollte aber noch aufgelistet sein.

Ein Anwendungsprotokoll dokumentiert Ereignisse als Text. Das bereitgestellte Übungsprotokoll ist worker.log; die Übung benötigt weder systemd noch Kernelprotokollzugriff. Lies das Protokoll:

cat /home/labex/project/worker.log

Es mischt Informationsmeldungen mit einer ERROR-Zeile zum festgefahrenen Vorgang. Speichere mit dem bereits eingeführten Filtern und Umleiten nur Fehlerdatensätze:

grep '^ERROR ' /home/labex/project/worker.log > /home/labex/project/worker-errors.txt
cat /home/labex/project/worker-errors.txt

Erwartete Ausgabe:

ERROR training request exceeded its time limit

Du hast einen ausgewählten Prozess gestoppt, einen unbeteiligten erhalten und seine Diagnosemeldung vom vollständigen Protokoll getrennt.

Zusammenfassung

Du hast Prozess-IDs, Eigentümer und Befehlszeilen geprüft, Vordergrundunterbrechung und Hintergrundjobs beobachtet, ein gezieltes Beendigungssignal gesendet und ein Anwendungsprotokoll gefiltert. Dabei hast du einen unbeteiligten Prozess erhalten und den ausgewählten festgefahrenen Prozess gestoppt.