← Linux System Administration

Shell-Skripte: unbeaufsichtigt laufen lassen

Ein Skript, das im Terminal funktioniert, ist noch kein Job. Sobald es nachts um drei aus einem Timer startet, liest niemand mehr die Fehlermeldung — es muss selbst entscheiden, was bei einem Abbruch in der Mitte passiert, was beim zweiten Lauf, und was, wenn zwei Läufe sich überholen. Dieses Modul zeigt dir die Handvoll Mittel, mit denen man das in Bash löst: die Schalter im Kopf jedes Skripts und ihre dokumentierten Lücken, Anführungszeichen als Sicherheitsmaßnahme, Aufräumen nach dem Abbruch, das atomare Ersetzen einer Datei und eine Sperre, die auch nach einem harten Abschuss wieder freigibt.

Solide · ~30 Min · 12 Abschnitte Einführung · 9 Übungen (davon 2 Missionen)

Modul starten →

Fortschritt wird gespeichert — du kannst das Modul später jederzeit fortsetzen.

Nur den Lehrtext lesen →

Das kannst du danach

  • ✓Ein Skript so schreiben, dass ein fehlgeschlagener Schritt nicht stillschweigend übergangen wird
  • ✓Einen Job gegen Doppelläufe sichern, ohne dass ein Absturz ihn dauerhaft blockiert
  • ✓Schritte so bauen, dass ein zweiter Lauf zum selben Zustand führt statt zur doppelten Wirkung

Übungen

  • 1. EntscheidungWas ist passiert?
  • 2. EntscheidungWarum greift der Abbruchschalter hier nicht?
  • 3. EntscheidungWoran liegt das?
  • 4. EntscheidungWas ist die richtige Korrektur?
  • 5. MissionDas Skript, das im Terminal funktioniert
  • 6. EntscheidungWie löst du das?
  • 7. EntscheidungWarum wirkt der Umweg hier nicht?
  • 8. EntscheidungWas ist die tragfähige Korrektur?
  • 9. MissionWas der zweite Lauf anrichtet
Quellen & Aktualität12 Primärquellen · zuletzt geprüft:
  1. 01man7.org/linux/man-pages/man1/bash.1.html
  2. 02man7.org/linux/man-pages/man1/flock.1.html
  3. 03man7.org/linux/man-pages/man2/flock.2.html
  4. 04man7.org/linux/man-pages/man2/rename.2.html
  5. 05man7.org/linux/man-pages/man1/mktemp.1.html
  6. 06shellcheck.net
  7. 07man7.org/linux/man-pages/man1/cat.1.html
  8. 08freedesktop.org/software/systemd/man/latest/systemd.service.html
  9. 09man7.org/linux/man-pages/man7/signal.7.html
  10. 10man7.org/linux/man-pages/man1/mv.1.html
  11. 11man7.org/linux/man-pages/man1/mkdir.1.html
  12. 12man7.org/linux/man-pages/man8/useradd.8.html

Verfasst von Julian Zentgraf