Cron: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
<span id="chronos-tabula"></span>
 
 
= Chronos Tabula =
 
= Chronos Tabula =
  
Zeile 5: Zeile 4:
 
* Der Entwickler hat sich jedoch verschrieben
 
* Der Entwickler hat sich jedoch verschrieben
  
<!----->
 
 
[[Bild:cron-namensherkunft.png]]
 
[[Bild:cron-namensherkunft.png]]
  
Zeile 14: Zeile 12:
 
* Es wird minütlich nach auszuführenden Jobs und Änderungen im crontab geprüft
 
* Es wird minütlich nach auszuführenden Jobs und Änderungen im crontab geprüft
  
<!----->
 
<span id="crontabs"></span>
 
 
= Crontabs =
 
= Crontabs =
  
 
* Um Syntaxfehler zu vermeiden, werden die Tabellen nicht nur mit dem Texteditor bearbeitet, sondern über den Befehl: '''crontab'''
 
* Um Syntaxfehler zu vermeiden, werden die Tabellen nicht nur mit dem Texteditor bearbeitet, sondern über den Befehl: '''crontab'''
  
<!----->
 
<span id="user-crontab"></span>
 
 
== User-Crontab ==
 
== User-Crontab ==
  
Zeile 27: Zeile 21:
 
* Die Jobs, die darin aufgeführt sind, werden von Cron unter der jeweiligen Benutzerkennung ausgeführt
 
* Die Jobs, die darin aufgeführt sind, werden von Cron unter der jeweiligen Benutzerkennung ausgeführt
  
<!----->
 
<span id="systemweiter-crontab"></span>
 
 
== Systemweiter Crontab ==
 
== Systemweiter Crontab ==
  
Zeile 34: Zeile 26:
 
* Das Format unterscheidet sich etwas von den Benutzercrontabs
 
* Das Format unterscheidet sich etwas von den Benutzercrontabs
  
<!----->
 
<span id="etccron.d"></span>
 
 
== /etc/cron.d/ ==
 
== /etc/cron.d/ ==
  
Zeile 42: Zeile 32:
 
* Alternativ auch in ''cron.daily'', ''cron.hourly'', ''cron.monthly'' oder ''cron.weekly''
 
* Alternativ auch in ''cron.daily'', ''cron.hourly'', ''cron.monthly'' oder ''cron.weekly''
  
<!----->
 
<span id="aufbau-einer-crontab-datei"></span>
 
 
= Aufbau einer Crontab-Datei =
 
= Aufbau einer Crontab-Datei =
  
Zeile 57: Zeile 45:
  
 
  0 3 * * 1 tar -zcf /var/backups/home.tgz /home/
 
  0 3 * * 1 tar -zcf /var/backups/home.tgz /home/
<span id="verwaltung-von-crontab"></span>
 
 
= Verwaltung von Crontab =
 
= Verwaltung von Crontab =
  
<span id="eigene-crontab-anzeigen"></span>
 
 
== Eigene Crontab anzeigen ==
 
== Eigene Crontab anzeigen ==
  
 
* '''crontab -l'''
 
* '''crontab -l'''
  
<!----->
 
<span id="crontab-eines-anderen-benutzers-anzeigen"></span>
 
 
== Crontab eines anderen Benutzers anzeigen ==
 
== Crontab eines anderen Benutzers anzeigen ==
  
 
* '''crontab -lu ''Benutzer'''''
 
* '''crontab -lu ''Benutzer'''''
  
<!----->
 
<span id="crontab-bearbeiten"></span>
 
 
== Crontab bearbeiten ==
 
== Crontab bearbeiten ==
  
 
* '''crontab -e'''
 
* '''crontab -e'''
  
<!----->
 
<span id="crontab-löschen"></span>
 
 
== Crontab löschen ==
 
== Crontab löschen ==
  
 
* '''crontab -r'''
 
* '''crontab -r'''
  
<!----->
 
<span id="crontab-aus-einer-datei-lesen"></span>
 
 
== Crontab aus einer Datei lesen ==
 
== Crontab aus einer Datei lesen ==
  
 
* '''crontab ''/Pfad/zur/Datei'''''
 
* '''crontab ''/Pfad/zur/Datei'''''
  
<!----->
 
<span id="cron-vs.-daemon"></span>
 
 
= Cron vs. Daemon =
 
= Cron vs. Daemon =
  
Zeile 102: Zeile 78:
 
* Bei performance-lastigen Aufgaben eher ein Daemon.
 
* Bei performance-lastigen Aufgaben eher ein Daemon.
  
<!----->
 
 
;Man muss aber je nach Situation selbst entscheiden, was mehr Sinn macht.
 
;Man muss aber je nach Situation selbst entscheiden, was mehr Sinn macht.
  
<span id="alternative-systemd"></span>
 
 
= Alternative Systemd =
 
= Alternative Systemd =
  
 
* Systemd-Service Dateien haben auch eine [[Systemd Service timers|Timer]]-Funktion, wenn man sie einstellen will.
 
* Systemd-Service Dateien haben auch eine [[Systemd Service timers|Timer]]-Funktion, wenn man sie einstellen will.
 
* Kann manchmal präziser sein, da Systemd die Zeit ab dem Boot zählt.
 
* Kann manchmal präziser sein, da Systemd die Zeit ab dem Boot zählt.

Version vom 15. Februar 2023, 10:48 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/

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

  • 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.