PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Tut]Crontab anlegen


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 ;)

Feudas
16.07.2010, 16:39
nene das reicht nicht :D

ausgabe des programms oder des zu startenden scripts in eine log umleiten
* * * * * programmoderscript > /var/log/meincronlog.log
und etwas GANZ wichtiges
angeben welcher user soll dals ausführender benutzt werden.
root ist in diesem fall die user angabe, da kann man dann auch zb www-data stehen haben für ein php script das www-data gehört.
* * * * * root programmoderscript
das ist zb wichtig um scripte oder programme nicht als der user auszufüren der man ist ;)

Zero111
16.07.2010, 16:45
ok das erste hab ich schlichtweg vergessen

und das 2. hab ich bisher auch noch nicht gewusst :D man lernt nie aus

Feudas
16.07.2010, 16:47
dann erweiter doch das tut einfach um die beidneund lösch die zusatznachrichten irritiert doch nur :D