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
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Prozess | ein Programm, das gerade läuft | |
| PID | die Nummer, die einen Prozess benennt | 4162 |
| Signal | eine kurze Nachricht an einen Prozess | TERM |
| Vordergrund | der eine Prozess, der Ihre Tastatur hat | |
| Hintergrund | ein Prozess, der läuft, während Sie etwas anderes tippen | |
| Job | ein 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
psHier 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
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
pgrep -f lab-workerHier 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
| Spalte | Beispiel | Bedeutung |
|---|---|---|
| UID | student | Wem der Prozess gehört |
| PID | 4162 | Die Nummer, die ihn benennt |
| PPID | 1 | Die PID seines Elternprozesses |
| STIME | 17:59 | Wann er gestartet wurde |
| CMD | /bin/bash /usr/local/bin/lab-worker | Der 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
| Nummer | Name | Wirkung |
|---|---|---|
| 15 | TERM | Bittet den Prozess, sich zu beenden. Das ist der Standard |
| 9 | KILL | Entfernt den Prozess. Er kann es nicht ignorieren |
| 2 | INT | Wird von Strg+C gesendet |
| 1 | HUP | Bedeutet oft: Einstellungen neu lesen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Wie heißt Signal 15?
kill -l 15Hier 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?
kill -l 9Hier 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
pkill -f lab-workerHier 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?
pgrep -f lab-workerHier 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
pkill -f lab-stubbornHier 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?
pgrep -f lab-stubbornHier 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
pkill -9 -f lab-stubbornHier 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?
pgrep -f lab-stubbornHier 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
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
jobsHier 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
kill %1Hier 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
ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -n 4Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.