Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Ein Programm sauber beenden (Signale)

Nach dieser Lektion: Ich kann einen Prozess finden und ihn richtig beenden.

Lektion, 50 Min.15 BefehleLab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Das Kassenprogramm hängt

Im Laden reagiert das Kassenprogramm nicht mehr, ausgerechnet zur Stoßzeit. Der Filialleiter will nicht, dass Sie den ganzen Server neu starten. Vierzig andere Programme laufen darauf.

Sie müssen genau dieses eine Programm finden und beenden. Alle anderen lassen Sie in Ruhe.

Am Ende dieser Lektion

Notiz

Ich kann einen Prozess finden und ihn richtig beenden.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Prozessein Programm, das gerade läuft
PIDdie Nummer, die einen Prozess benennt4162
Signaleine kurze Nachricht an einen ProzessTERM
Vordergrundder eine Prozess, der Ihre Tastatur hat
Hintergrundein Prozess, der läuft, während Sie etwas anderes tippen
Jobein Prozess, den die Shell gestartet hat und in einer Liste führt[1]

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Jedes laufende Programm ist ein Prozess

Wenn Sie ein Programm starten, legt das System dafür einen Prozess an. Der Prozess bekommt eine Nummer, seine PID.

Ein Prozess hat außerdem einen Besitzer, eine Startzeit und einen Elternprozess: den Prozess, der ihn gestartet hat. Der erste Prozess nach dem Booten, unter Ubuntu systemd, hat die PID 1. Fast alle anderen Prozesse stammen von ihm ab.

Die Prozesse Ihrer Sitzung

Befehl
ps

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Alle Prozesse, dann nur die Lab-Programme

Befehl
ps -ef | grep lab-

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Nur die PID des Workers

Befehl
pgrep -f lab-worker

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Beispiel: eine Zeile von ps -ef

SpalteBeispielBedeutung
UIDstudentWem der Prozess gehört
PID4162Die Nummer, die ihn benennt
PPID1Die PID seines Elternprozesses
STIME17:59Wann er gestartet wurde
CMD/bin/bash /usr/local/bin/lab-workerDer Befehl, der läuft

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Signal bittet einen Prozess aufzuhören

Sie beenden einen Prozess, indem Sie ihm ein Signal schicken. kill 4162 sendet Signal 15, genannt TERM. Es bittet den Prozess, sich zu beenden. Ein gutes Programm sichert seine Arbeit und endet.

kill -9 4162 sendet Signal 9, genannt KILL. Das System entfernt den Prozess sofort. Das Programm kann nicht mehr aufräumen.

Vier Signale, die Sie kennen sollten

NummerNameWirkung
15TERMBittet den Prozess, sich zu beenden. Das ist der Standard
9KILLEntfernt den Prozess. Er kann es nicht ignorieren
2INTWird von Strg+C gesendet
1HUPBedeutet oft: Einstellungen neu lesen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Wie heißt Signal 15?

Befehl
kill -l 15

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Und Signal 9?

Befehl
kill -l 9

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die zwei Lab-Programme beenden

Eine PID von Hand zu tippen dauert, und eine Schaltfläche kennt Ihre PID nicht. pkill -f name findet den Prozess über seinen Namen und sendet ihm ein Signal.

Der Worker endet auf eine einfache Bitte. Der Sture ignoriert sie. Beobachten Sie, was pgrep nach jedem Schritt ausgibt. Keine Ausgabe heißt: Es gibt diesen Prozess nicht.

Den Worker bitten, sich zu beenden

Befehl
pkill -f lab-worker

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ist er noch da?

Befehl
pgrep -f lab-worker

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Den Sturen bitten

Befehl
pkill -f lab-stubborn

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ist er noch da?

Befehl
pgrep -f lab-stubborn

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Jetzt mit Signal 9 entfernen

Befehl
pkill -9 -f lab-stubborn

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Und jetzt?

Befehl
pgrep -f lab-stubborn

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele halten kill -9 für ein stärkeres kill und nehmen es zuerst. kill lässt ein Programm seine Arbeit sichern und aufräumen. kill -9 lässt ihm keine Chance und kann eine halb geschriebene Datei hinterlassen. Senden Sie TERM, warten Sie ein paar Sekunden, und nehmen Sie 9 nur, wenn der Prozess nicht aufhört.

Vordergrund, Hintergrund und top

Ein Programm, das Sie starten, läuft im Vordergrund. Es hat Ihre Tastatur, bis es endet. Strg+C sendet Signal 2 und beendet es meistens.

Hängen Sie & an einen Befehl, läuft er im Hintergrund. Die Shell führt solche Befehle als Jobs und nummeriert sie: [1].

Mit top sehen Sie die aktivsten Prozesse live. Mit q verlassen Sie es wieder. Eine Schaltfläche kann kein q drücken, tippen Sie diesen Befehl deshalb selbst.

Eine Wartezeit von fünf Minuten im Hintergrund starten

Befehl
sleep 300 &

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ihre Jobs auflisten

Befehl
jobs

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Job 1 beenden

Befehl
kill %1

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die drei aktivsten Prozesse, einmal

Befehl
ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -n 4

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Über dieses Lab und seinen Quellcode: Lab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.