Jobs: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
*Unter einem Job versteht man ein Programm, welches man von der Shell gelöst hat.
==Job-Control (Vordergrund / Hintergrund)==
*D. h. man kann ganz normal weiter arbeiten und der Job verrichtet seinen Dienst im Hintergrund.
*Man kann jederzeit zu diesem Job wieder Kontakt aufnehmen.
*Ein Job kann auf 2 Arten gestarten werden:


# Durch Anhängen des & Zeichens beim Programmstart
*Ein Job ist ein Programm, das von der Shell gestartet wurde und im Vorder- oder Hintergrund laufen kann.
*tail -f /var/log/messages &
*Die Shell verwaltet Jobs unabhängig von PIDs.
Jun 19 06:59:31 zero -- MARK --
Jun 19 07:19:31 zero -- MARK --
Jun 19 07:39:32 zero -- MARK --
Jun 19 07:44:57 zero syslogd 1.5.0#5ubuntu3: restart.
Jun 19 07:59:32 zero -- MARK --
Jun 19 08:19:32 zero -- MARK --
Jun 19 08:39:32 zero -- MARK --
Jun 19 08:59:32 zero -- MARK --
Jun 19 09:19:33 zero -- MARK --
Jun 19 09:39:33 zero -- MARK --
[3] 27421


# Durch Stoppen des Prozesses durch Drücken von Strg-Z und in den Hintergrund schicken mit %n (n ist die Jobnummer)
==Job im Hintergrund starten==
*watch cat /proc/cpuinfo
*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
  [4]+  Stopped                 watch cat /proc/cpuinfo
  [2]+  Stopped  sleep 300
*bg %4
  [4]+ watch cat /proc/cpuinfo &


Anweisungen im Zusammenhang mit Jobs (n ist die Jobnummer)
==Job im Hintergrund fortsetzen==
* bg %n : Einen Job in den Hintergrund stellen (wie oben)
*bg %2
* fg %n : Einen Job in den Vordergrund holen
  [2]+ sleep 300 &
* fg %4
  watch cat /proc/cpuinfo


* jobs : Aktive Jobs ausgeben
==Job in den Vordergrund holen==
*fg %2
sleep 300


*jobs
==Jobs beenden==
[1]   Running                tail -f /var/log/syslog &
*kill %2
[2]  Running                tail -f /var/log/syslog &
*kill -9 %2
[3]- Running                tail -f /var/log/messages &
 
[4]+  Stopped                watch cat /proc/cpuinfo
==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
-->


* Strg-Z : Einen Vordergrund-Job vorübergehend anhalten
;Aufgabe 4
* kill -STOP %n : Unterbricht Job im Hintergrund
*Beende den Job über seine Jobnummer
* kill -STOP %1
<!-- Lösung:
* jobs
kill %1
[1]+  '''Stopped'''                tail -f /var/log/syslog
oder entsprechende Jobnummer
[2]  Running                tail -f /var/log/syslog &
-->
[3]  Running                tail -f /var/log/messages &
[4]-  Stopped                watch cat /proc/cpuinfo
* kill -CONT %n : Setzt den unterbrochenen Job im Hintergrund fort
* kill -CONT %1
* jobs
[1]+  '''Running'''                tail -f /var/log/syslog &
[2]  Running                tail -f /var/log/syslog &
[3]  Running                tail -f /var/log/messages &
[4]- Stopped                watch cat /proc/cpuinfo
* kill -KILL %n : Tötet Job im Hintergrund
* kill -KILL %1
* jobs
[1]+  '''Killed'''                  tail -f /var/log/syslog
[2]  Running                tail -f /var/log/syslog &
[3]  Running                tail -f /var/log/messages &
[4]-  Stopped                watch cat /proc/cpuinfo
* jobs
[2]  Running                tail -f /var/log/syslog &
[3]-  Running                tail -f /var/log/messages &
[4]+  Stopped                watch cat /proc/cpuinfo


Bedingungen, die zu Jobausführung eingehalten werden sollen:
;Aufgabe 5
* Der Job soll nicht auf den Bildschirm schreiben (Standardausgabe +Standardfehlerkanal).
*Erkläre den Unterschied zwischen Jobnummer und PID anhand dieses Jobs
* Er soll keine Eingaben vom Benutzer erwarten.
<!-- 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