Jobs: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
==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 | Strg-Z | ||
[ | [2]+ Stopped sleep 300 | ||
==Job im Hintergrund fortsetzen== | |||
* bg % | *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 | |||
<!-- Lösung: | |||
ls -lR / > /tmp/ls.log 2>&1 & | |||
jobs | |||
--> | |||
;Aufgabe 2 | |||
*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 | |||
*Hole den laufenden Job wieder in den Vordergrund | |||
<!-- Lösung: | |||
fg | |||
--> | |||
;Aufgabe 4 | |||
*Beende den Job über seine Jobnummer | |||
<!-- Lösung: | |||
kill %1 | |||
oder entsprechende Jobnummer | |||
--> | |||
* | |||
;Aufgabe 5 | |||
* | *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