Cron: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 95: | Zeile 95: | ||
= Aufgaben = | = Aufgaben = | ||
| − | * | + | =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
- 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
