Jobs: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 47: | Zeile 47: | ||
*pkill arbeitet mit Prozessnamen | *pkill arbeitet mit Prozessnamen | ||
| − | ==Übungsaufgaben== | + | ==Übungsaufgaben (Job-Control mit Umleitung)== |
| + | |||
| + | ===Vorbereitung=== | ||
| + | ;Terminal | ||
| + | *ls -lR / > /tmp/ls.log 2>&1 & | ||
| + | |||
;Aufgabe 1 | ;Aufgabe 1 | ||
| − | *Starte | + | *Starte den Befehl im Hintergrund und zeige ihn mit jobs an |
| + | <!-- Lösung: | ||
| + | ls -lR / > /tmp/ls.log 2>&1 & | ||
| + | jobs | ||
| + | --> | ||
;Aufgabe 2 | ;Aufgabe 2 | ||
| − | *Starte | + | *Starte den Befehl im Vordergrund, halte ihn an und setze ihn im Hintergrund fort |
| + | <!-- Lösung: | ||
| + | ls -lR / > /tmp/ls.log 2>&1 | ||
| + | Strg-Z | ||
| + | bg | ||
| + | --> | ||
;Aufgabe 3 | ;Aufgabe 3 | ||
| − | *Hole | + | *Hole den laufenden Job wieder in den Vordergrund |
| + | <!-- Lösung: | ||
| + | fg | ||
| + | --> | ||
;Aufgabe 4 | ;Aufgabe 4 | ||
| − | *Beende | + | *Beende den Job über seine Jobnummer |
| + | <!-- Lösung: | ||
| + | kill %1 | ||
| + | oder entsprechende Jobnummer | ||
| + | --> | ||
;Aufgabe 5 | ;Aufgabe 5 | ||
| − | *Erkläre den Unterschied zwischen Jobnummer und PID | + | *Erkläre den Unterschied zwischen Jobnummer und PID anhand dieses Jobs |
| + | <!-- Lösung: | ||
| + | Jobnummer: von der Shell vergeben, nur im aktuellen Terminal gültig | ||
| + | PID: vom Kernel vergeben, systemweit eindeutig | ||
| + | --> | ||
Aktuelle Version vom 28. Januar 2026, 05:50 Uhr
Job-Control (Vordergrund / Hintergrund)
- Ein Job ist ein Programm, das von der Shell gestartet wurde und im Vorder- oder Hintergrund laufen kann.
- Die Shell verwaltet Jobs unabhängig von PIDs.
Job im Hintergrund starten
- sleep 300 &
- Die Shell gibt eine Jobnummer und die PID aus
[1] 12345
Aktive Jobs anzeigen
- jobs
Job anhalten
- sleep 300
Strg-Z [2]+ Stopped sleep 300
Job im Hintergrund fortsetzen
- bg %2
[2]+ sleep 300 &
Job in den Vordergrund holen
- fg %2
sleep 300
Jobs beenden
- kill %2
- kill -9 %2
Typische Job-Zustände
- Running Job läuft
- Stopped Job angehalten (z.B. Strg-Z)
- Done Job beendet
- Killed Job durch Signal beendet
Wichtige Regeln
- Hintergrund-Jobs dürfen keine Benutzereingaben erwarten
- Ausgaben auf den Bildschirm sind möglich, aber störend
- Jobs sind an das Terminal gebunden
Abgrenzung
- Job ≠ Prozess
- Ein Job kann aus mehreren Prozessen bestehen
- kill arbeitet mit PID oder Jobnummer
- pkill arbeitet mit Prozessnamen
Übungsaufgaben (Job-Control mit Umleitung)
Vorbereitung
- Terminal
- ls -lR / > /tmp/ls.log 2>&1 &
- Aufgabe 1
- Starte den Befehl im Hintergrund und zeige ihn mit jobs an
- Aufgabe 2
- Starte den Befehl im Vordergrund, halte ihn an und setze ihn im Hintergrund fort
- Aufgabe 3
- Hole den laufenden Job wieder in den Vordergrund
- Aufgabe 4
- Beende den Job über seine Jobnummer
- Aufgabe 5
- Erkläre den Unterschied zwischen Jobnummer und PID anhand dieses Jobs