Cron: crontab editieren
Der Cron-Daemon sorgt - ganz einfach - für das Ausführen von Befehlen zu bestimmten Zeitpunkten. Einmalig oder in regelmäßigen, zeitgesteuerten Intervallen. Beispielhaft könnte Cron die Sicherung einer Datenbank, das Erneuern von Webstatistiken oder das Versenden von Status-Mails übernehmen.
Diesen Daemon vorausgesetzt (standardmäßig installiert) kann man nun festlegen, wann etwas automatisiert ausgeführt werden soll. Befehl dazu:
# crontab -Parameter
Parameter sind:
-e == Editieren der Crontabelle
-r == Löschen der Crontabelle
-l == Anzeigen der Crontabelle
Neben der allgemeinen Cron-Tabelle unter
# /etc/crontab
gibt es aber auch User-eigene Crontabs, die unter
# /var/spool/cron
zu finden sind.
In diesem Zusammenhang interessant zu wissen: soll nicht jeder User die Möglichkeit haben, eine Crontab anzulegen, wird diese Beschränkung über die
# /etc/cron.allow
bzw.
# /etc/cron.deny
geregelt.
geöffnete Cron-Tabelle: crontab -e
Im Zugriff (hier mit dem Standard-Editor VI) sieht die Crontab dann aus wie in der Tabelle dargestellt.
Die ersten fünf Werte geben zusammen an, wann denn Befehl X ausgeführt werden soll. Dabei gilt die Reihenfolge:
1. Wert: Minute (Werte von 0-59 sind zulässig)
2. Wert: Stunde (Werte von 0-23 sind zulässig)
3. Wert: Tag innerhalb eine Monats (Werte von 0-32 sind zulässig)
4. Wert: Monat (Werte von 0-12 sind zulässig)
5. Wert: Wochentag (Werte von 0-7 sind zulässig, wobei 0 und 7 den Sonntag bezeichnen)
6. Wert: Angabe des Befehls/Skripts (sieh dazu auch: Ausführbarkeit, Dateirechte - chmod)
Dabei bedeutet * = beliebig
Darf's auch etwas mehr sein?
Soll ein Skript mehrmals am Tag ausgeführt werden, kann man den Stundenwert entweder als Liste mitgeben (getrennt durch Kommata) ...
# Ausführen um 11 & 23 Uhr
0 11,23 * * * /usr/test/aha.sh
oder
# Verschicken von Sylvester-Grüßen jeden 01. Jan, 00:01
1 0 1 1 * /usr/test/sylvestergruss.sh
Soll ein Skript in einer bestimmt Schrittlänge ausgeführt werden (alle zwei Stunden), würde man das so schreiben
# Ausführen alle 2 Stunden Uhr
0 */2 * * * /usr/test/aha.sh
bzw.
# Ausführen alle 2 Stunden, aber nur zwischen 8-17 Uhr
0 8-17/2 * * * /usr/test/aha.sh
Anderes Beispiel:
# Ausführen alle 2 Stunden, aber nur von Mo-Fr zwischen 8-17 # Uhr
0 8-17/2 * * 1-5 /usr/test/aha.sh
Die "alte" Methode
Neben dem direkten Editieren des Files gibt es auch die "alte Methode" mit etwas mehr Sicherheit, was ungewolltes Abspeichern angeht.
1. # crontab -l > /tmp/mycron
(Auslesen der Crontab, umleiten in eine Datei "mycron")
2. # vi /tmp/mycron
(Direktes Editieren der temporären Datei)
3. # crontab /tmp/mycron
(Aufnehmen der temporären Datei als Crontab)
Mögliche Fallen
Für Schnellschießer besteht die Elefantenfalle, "e" und "r" zu vertauschen. Die Tasten liegen nebeneinander und bedeuten bei der Eingabe von
# crontab -[Param]
den Unterschied zwischen Bearbeiten und Löschen!
Wird etwas regelmäßig über crontab ausgeführt, aber Sie finden den Eintrag mit
# crontab -e
nicht? Schauen Sie mal unter
# /var/spool/cron
Denn dort sind User-eigene crontabs!
Wenn etwas um 12:00 Uhr ausgeführt werden soll, muss die Notation wie folgt lauten:
# Ausführen bei null (0) Minuten, und zwölf (12) Stunden.
0 12 * * * /usr/test/aha.sh
# Mit * (beliebigen, allen) Minuten und zwölf (12) Stunden wird das
# Skript zu jeder Minute der zwölften Stunde ausgeführt.
* 12 * * * /usr/test/aha.sh
original link
Diesen Daemon vorausgesetzt (standardmäßig installiert) kann man nun festlegen, wann etwas automatisiert ausgeführt werden soll. Befehl dazu:
# crontab -Parameter
Parameter sind:
-e == Editieren der Crontabelle
-r == Löschen der Crontabelle
-l == Anzeigen der Crontabelle
Neben der allgemeinen Cron-Tabelle unter
# /etc/crontab
gibt es aber auch User-eigene Crontabs, die unter
# /var/spool/cron
zu finden sind.
In diesem Zusammenhang interessant zu wissen: soll nicht jeder User die Möglichkeit haben, eine Crontab anzulegen, wird diese Beschränkung über die
# /etc/cron.allow
bzw.
# /etc/cron.deny
geregelt.
30 * * * * /opt/refresh.sh > /dev/nul * 23 * * * /opt/backup.sh
geöffnete Cron-Tabelle: crontab -e
Im Zugriff (hier mit dem Standard-Editor VI) sieht die Crontab dann aus wie in der Tabelle dargestellt.
Die ersten fünf Werte geben zusammen an, wann denn Befehl X ausgeführt werden soll. Dabei gilt die Reihenfolge:
1. Wert: Minute (Werte von 0-59 sind zulässig)
2. Wert: Stunde (Werte von 0-23 sind zulässig)
3. Wert: Tag innerhalb eine Monats (Werte von 0-32 sind zulässig)
4. Wert: Monat (Werte von 0-12 sind zulässig)
5. Wert: Wochentag (Werte von 0-7 sind zulässig, wobei 0 und 7 den Sonntag bezeichnen)
6. Wert: Angabe des Befehls/Skripts (sieh dazu auch: Ausführbarkeit, Dateirechte - chmod)
Dabei bedeutet * = beliebig
Darf's auch etwas mehr sein?
Soll ein Skript mehrmals am Tag ausgeführt werden, kann man den Stundenwert entweder als Liste mitgeben (getrennt durch Kommata) ...
# Ausführen um 11 & 23 Uhr
0 11,23 * * * /usr/test/aha.sh
oder
# Verschicken von Sylvester-Grüßen jeden 01. Jan, 00:01
1 0 1 1 * /usr/test/sylvestergruss.sh
Soll ein Skript in einer bestimmt Schrittlänge ausgeführt werden (alle zwei Stunden), würde man das so schreiben
# Ausführen alle 2 Stunden Uhr
0 */2 * * * /usr/test/aha.sh
bzw.
# Ausführen alle 2 Stunden, aber nur zwischen 8-17 Uhr
0 8-17/2 * * * /usr/test/aha.sh
Anderes Beispiel:
# Ausführen alle 2 Stunden, aber nur von Mo-Fr zwischen 8-17 # Uhr
0 8-17/2 * * 1-5 /usr/test/aha.sh
Die "alte" Methode
Neben dem direkten Editieren des Files gibt es auch die "alte Methode" mit etwas mehr Sicherheit, was ungewolltes Abspeichern angeht.
1. # crontab -l > /tmp/mycron
(Auslesen der Crontab, umleiten in eine Datei "mycron")
2. # vi /tmp/mycron
(Direktes Editieren der temporären Datei)
3. # crontab /tmp/mycron
(Aufnehmen der temporären Datei als Crontab)
Mögliche Fallen
Für Schnellschießer besteht die Elefantenfalle, "e" und "r" zu vertauschen. Die Tasten liegen nebeneinander und bedeuten bei der Eingabe von
# crontab -[Param]
den Unterschied zwischen Bearbeiten und Löschen!
Wird etwas regelmäßig über crontab ausgeführt, aber Sie finden den Eintrag mit
# crontab -e
nicht? Schauen Sie mal unter
# /var/spool/cron
Denn dort sind User-eigene crontabs!
Wenn etwas um 12:00 Uhr ausgeführt werden soll, muss die Notation wie folgt lauten:
# Ausführen bei null (0) Minuten, und zwölf (12) Stunden.
0 12 * * * /usr/test/aha.sh
# Mit * (beliebigen, allen) Minuten und zwölf (12) Stunden wird das
# Skript zu jeder Minute der zwölften Stunde ausgeführt.
* 12 * * * /usr/test/aha.sh
original link
vireas - 18. Mär, 13:26