Zero111
16.07.2010, 15:46
Viele verzweifeln an den richtigen anlegen eines Crontabs, obwohl es ziemlich simpel ist:
Ein Crontab besteht aus 6 durch ein leerzeichen getrennten Werten:
Die Bedeutung der Werte in Reienfolge:
Minuten : Minute an den Crontab ausgeführt werden soll
Stunde: Die Stunde
Tag: Der Tag im Monat an dem der Crontab ausgeführt werden soll
Monat: Der Monat
Wochentag: 0-6 (0=Sonntag)
Kommando: der Programmaufruf (gleiche Syntax wie in der shell jedoch mit absoluten Pfadangaben)
Werte Kombienieren
Wenn ein Cronjob mehrmals am tag/monat/jahr ect durchlaufen soll kann man werte kombinieren
Zb:
1-6 = Cronjob wird zb von 1-6 Uhr ausgeführt
zb:
1-6 * * * * Kommando
(Crontab wird 6 mal pro stunde ausgeführt jeweils Minute 1-6 [0:01, 0:02, 0:03usw)
oder
00 1-6 * * * Kommando
(Crontab wird von 1-6 Uhr zur jeder Vollen Stunde ausgeführt)
---
*/x : Crontab wird alle x Intervalle ausgeführt
zb
*/5 * * * * Kommando
(Crontab wird alle 5 Minuten ausgeführt)
* */2 * * * Kommando
(Crontab wird im 2 Stundentakt ausgeführt)
a,b,c : Cronjob wird um a, b und c ausgeführt
zb:
8,12,20 * * * * Kommando
(Crontab wird 3 mal in der stunde ausgeführt jeweils um Minute 8,12 und 20)
Kombination der Möglichkeiten:
Die oben genannten möglichkeiten lassen sich noch miteinander kombinieren (jetzt wirds schwer :D)
zb
* 1-6/2 * * Kommando
(Crontab wird zwischen 1-6 Uhr alle 2stunden ausgeführt)
Jetzt noch ein paar beispiele
00 03 01 * * /etc/init.d/reboot
Führt zum ersten eines Monats um 3:00 Nachts einen reboot aus
00 04 * * * rm -R /var/log
Löscht jede Nacht um 4 Uhr das Logverzeichnis
30 05 * * 1 /etc/init.d/apache2 restart
Apache Server wird jeden Montag um 5:30 Neugestartet
00 06 15 */2 * /etc/init.d/reboot
führt alle 2 Monate am 15. eines Monats um 6:00 einen Reboot aus
00 06 15 1-6/2 * /etc/init.d/reboot
Führt von Januar - Juni alle 2 Monate am 15. eines Monats um 6 uhr einen reboot aus
*/30 * * * * php /var/www/include/cleanup.php
Führt alle 30 Minuten jeweils um 00 und 30 die cleanup.php aus
00 6-22/2 * * * /root/datenbankbackup
führt von 6-22 Uhr alle 2 Stunden einen datenbank backup durch
Ich denke das reicht an beispielen ;)
Ein Crontab besteht aus 6 durch ein leerzeichen getrennten Werten:
Die Bedeutung der Werte in Reienfolge:
Minuten : Minute an den Crontab ausgeführt werden soll
Stunde: Die Stunde
Tag: Der Tag im Monat an dem der Crontab ausgeführt werden soll
Monat: Der Monat
Wochentag: 0-6 (0=Sonntag)
Kommando: der Programmaufruf (gleiche Syntax wie in der shell jedoch mit absoluten Pfadangaben)
Werte Kombienieren
Wenn ein Cronjob mehrmals am tag/monat/jahr ect durchlaufen soll kann man werte kombinieren
Zb:
1-6 = Cronjob wird zb von 1-6 Uhr ausgeführt
zb:
1-6 * * * * Kommando
(Crontab wird 6 mal pro stunde ausgeführt jeweils Minute 1-6 [0:01, 0:02, 0:03usw)
oder
00 1-6 * * * Kommando
(Crontab wird von 1-6 Uhr zur jeder Vollen Stunde ausgeführt)
---
*/x : Crontab wird alle x Intervalle ausgeführt
zb
*/5 * * * * Kommando
(Crontab wird alle 5 Minuten ausgeführt)
* */2 * * * Kommando
(Crontab wird im 2 Stundentakt ausgeführt)
a,b,c : Cronjob wird um a, b und c ausgeführt
zb:
8,12,20 * * * * Kommando
(Crontab wird 3 mal in der stunde ausgeführt jeweils um Minute 8,12 und 20)
Kombination der Möglichkeiten:
Die oben genannten möglichkeiten lassen sich noch miteinander kombinieren (jetzt wirds schwer :D)
zb
* 1-6/2 * * Kommando
(Crontab wird zwischen 1-6 Uhr alle 2stunden ausgeführt)
Jetzt noch ein paar beispiele
00 03 01 * * /etc/init.d/reboot
Führt zum ersten eines Monats um 3:00 Nachts einen reboot aus
00 04 * * * rm -R /var/log
Löscht jede Nacht um 4 Uhr das Logverzeichnis
30 05 * * 1 /etc/init.d/apache2 restart
Apache Server wird jeden Montag um 5:30 Neugestartet
00 06 15 */2 * /etc/init.d/reboot
führt alle 2 Monate am 15. eines Monats um 6:00 einen Reboot aus
00 06 15 1-6/2 * /etc/init.d/reboot
Führt von Januar - Juni alle 2 Monate am 15. eines Monats um 6 uhr einen reboot aus
*/30 * * * * php /var/www/include/cleanup.php
Führt alle 30 Minuten jeweils um 00 und 30 die cleanup.php aus
00 6-22/2 * * * /root/datenbankbackup
führt von 6-22 Uhr alle 2 Stunden einen datenbank backup durch
Ich denke das reicht an beispielen ;)