Cron: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 95: Zeile 95:
 
= Aufgaben =
 
= Aufgaben =
  
* [[Aufgaben cron]]
+
=Aufgaben 1=
 +
; Erstellen Sie folgenden Zeitplan:
 +
* Jede halbe Stunde soll der Inhalt des Ordners ''/tmp'' nach ''/var/log/tmp.log'' geloggt werden
 +
<!-- * Um 9 Uhr Freitags soll soll eine Begrüßung (DISPLAY=:0 notify-send "Guten Morgen") erscheinen -->
 +
* Um 11 Uhr von Montags bis Freitags sollen die Dateien in /bin nach /root gebackupt werden
 +
<!-- * '''crontab -e''' -->
 +
 
 +
<!--  * /30 * * * * ls /tmp > /var/log/tmp.log -->
 +
<!--  0 9 * * fri DISPLAY=:0 notify-send "Guten Morgen" -->
 +
<!--  0 11 * * 1-5 cp /bin /root-->
 +
=Aufgaben 2=
 +
* Erstellen Sie einen Cron-Job, der jeden Tag um 12 Uhr mittags eine Datei in Ihrem Home-Verzeichnis erstellt.
 +
<!-- Lösung:
 +
crontab -e
 +
0 12 * * * touch ~/datei_$(date +\%Y\%m\%d).txt
 +
-->
 +
 
 +
* Erstellen Sie einen Cron-Job, der jede Minute den aktuellen Speicherverbrauch in eine Logdatei schreibt.
 +
<!-- Lösung:
 +
crontab -e
 +
* * * * * free -m >> ~/speicher.log
 +
-->
 +
 
 +
* Erstellen Sie einen Cron-Job, der jeden Montag um 3 Uhr morgens ein Backup Ihres Home-Verzeichnisses erstellt.
 +
<!-- Lösung:
 +
crontab -e
 +
0 3 * * 1 tar -zcf ~/backup_$(date +\%Y\%m\%d).tgz ~/
 +
-->
 +
 
 +
* Löschen Sie alle Ihre Cron-Jobs.
 +
<!-- Lösung: crontab -r -->
 +
 
 +
* Erstellen Sie einen Cron-Job, der jede Stunde den Inhalt des Verzeichnisses /var/log überprüft und den Inhalt in eine Datei schreibt.
 +
<!-- Lösung:
 +
crontab -e
 +
0 * * * * ls /var/log >> ~/log_verzeichnis.txt
 +
-->
 +
 
 +
=Aufgaben 3 Backup Server mit Cron=
 +
*Installiere nfs-common
 +
*Erstelle das Verzeichnis /mnt/backup
 +
*Füge in die /etc/fstab folgende Zeile an
 +
'''192.168.6.200:/mnt/data /mnt/backup nfs defaults 0 0'''
 +
*Führe '''mount -a ; systemctl daemon-reload''' und kontrolliere die Anbindung
 +
*Erstelle /mnt/backup ein Vereichnis mit deinem Hostnamen
 +
*Erstelle einen cronjob der folgendes macht.
 +
**Jede Stunde soll dein /etc dort in dem Verzeichnis welches deinen Hostnamen trägt, gesichert werden.
 +
**Die Sicherung soll den Namen in der Art '''2024-07-17-15-30-etc''' erhalten

Version vom 26. August 2026, 11:01 Uhr

Chronos Tabula

  • Der Name leitet sich vom griechischen Wort für Zeit ab
  • Der Entwickler hat sich jedoch verschrieben

Cron-namensherkunft.png

  • Der cron-Daemon ist eine Jobsteuerung für wiederkehrende Aufgaben, die automatisch zu einer bestimmten Zeit aufgeführt werden sollen (cronjobs).
  • z.B. Archivieren und Löschen von Logdateien, Erneuern von Zertifikaten, DynDNS oder andere Programme zur Instandhaltung des Systems
  • Der Cron-Daemon überwacht dazu verschiedene Dateien und Verzeichnisse, in denen Anweisungen liegen, die in regelmäßigen Abständen ausgeführt werden sollen (crontabs).
  • Beim Start des Daemons wird die Tabelle in den Arbeitsspeicher geladen
  • Es wird minütlich nach auszuführenden Jobs und Änderungen im crontab geprüft

Crontabs

  • Um Syntaxfehler zu vermeiden, werden die Tabellen nicht nur mit dem Texteditor bearbeitet, sondern über den Befehl: crontab

User-Crontab

  • Jeder Benutzer des Systems kann eine eigene Crontab erstellen und bearbeiten
  • Die Jobs, die darin aufgeführt sind, werden von Cron unter der jeweiligen Benutzerkennung ausgeführt

Systemweiter Crontab

  • Befindet sich unter /etc/crontab
  • Das Format unterscheidet sich etwas von den Benutzercrontabs

/etc/cron.d/

  • Hier können sich Dateien im selben Format wie in /etc/crontab befinden
  • nützlich für Snippets
  • Alternativ auch in cron.daily, cron.hourly, cron.monthly oder cron.weekly

Aufbau einer Crontab-Datei

* * * * * auszuführender Befehl
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └──── Wochentag (0-7 oder Sun, Mon, Tue,etc) (Sonntag =0 oder =7)
│ │ │ └────── Monat (1-12 oder Jan, Feb, etc)
│ │ └──────── Tag (1-31)
│ └────────── Stunde (0-23)
└──────────── Minute (0-59)

z.B. wöchtenliches Backup der Heimatverzeichnisse aller Benutzer um 3 Uhr morgens:

0 3 * * 1 tar -zcf /var/backups/home.tgz /home/

Beispiele

*/2 - Dieser Eintrag führt die Aufgabe alle 2 Minuten aus.
*/2 * * * * /pfad/zum/skript.sh
1,3,5,9 - Dieser Eintrag führt die Aufgabe zu bestimmten Minuten aus, nämlich 1, 3, 5 und 9.
1,3,5,9 * * * * /pfad/zum/skript.sh
5-9 - Dieser Eintrag führt die Aufgabe von Minute 5 bis Minute 9 in jeder Stunde aus.
5-9 * * * * /pfad/zum/skript.sh

Verwaltung von Crontab

Eigene Crontab anzeigen

  • crontab -l

Crontab eines anderen Benutzers anzeigen

  • crontab -lu Benutzer

Crontab bearbeiten

  • crontab -e

Crontab löschen

  • crontab -r

Crontab aus einer Datei lesen

  • crontab /Pfad/zur/Datei

Cron vs. Daemon (Hintergrundprozess)

  • Ein Daemon läuft immer, d.h.:
    • + Updates laufen häufiger als einmal pro Minute
    • + Es kann sich an seinen vorherigen Status erinnern, falls es notwendig ist
    • - Verbraucht RAM selbst wenn es gerade nichts tut
    • - Memory Leaks sind ein Problem, falls es sie gibt
    • - Abhängig von der Implementation wird es nicht automatisch bei Fehlern neu gestartet
  • Wenn man also eher robuste Aufgaben verteilt, empfiehlt sich Cron.
  • Bei performance-lastigen Aufgaben eher ein Daemon.
Man muss aber je nach Situation selbst entscheiden, was mehr Sinn macht.

Alternative Systemd

  • Systemd-Service Dateien haben auch eine Timer-Funktion, wenn man sie einstellen will.
  • Kann manchmal präziser sein, da Systemd die Zeit ab dem Boot zählt.

Aufgaben

Aufgaben 1

Erstellen Sie folgenden Zeitplan
  • Jede halbe Stunde soll der Inhalt des Ordners /tmp nach /var/log/tmp.log geloggt werden
  • Um 11 Uhr von Montags bis Freitags sollen die Dateien in /bin nach /root gebackupt werden

Aufgaben 2

  • Erstellen Sie einen Cron-Job, der jeden Tag um 12 Uhr mittags eine Datei in Ihrem Home-Verzeichnis erstellt.
  • Erstellen Sie einen Cron-Job, der jede Minute den aktuellen Speicherverbrauch in eine Logdatei schreibt.
  • Erstellen Sie einen Cron-Job, der jeden Montag um 3 Uhr morgens ein Backup Ihres Home-Verzeichnisses erstellt.
  • Löschen Sie alle Ihre Cron-Jobs.
  • Erstellen Sie einen Cron-Job, der jede Stunde den Inhalt des Verzeichnisses /var/log überprüft und den Inhalt in eine Datei schreibt.

Aufgaben 3 Backup Server mit Cron

  • Installiere nfs-common
  • Erstelle das Verzeichnis /mnt/backup
  • Füge in die /etc/fstab folgende Zeile an

192.168.6.200:/mnt/data /mnt/backup nfs defaults 0 0

  • Führe mount -a ; systemctl daemon-reload und kontrolliere die Anbindung
  • Erstelle /mnt/backup ein Vereichnis mit deinem Hostnamen
  • Erstelle einen cronjob der folgendes macht.
    • Jede Stunde soll dein /etc dort in dem Verzeichnis welches deinen Hostnamen trägt, gesichert werden.
    • Die Sicherung soll den Namen in der Art 2024-07-17-15-30-etc erhalten