Einfacher Guide mit Praxisbeispielen, wie ihr unter Debian, Ubuntu und Linux Mint ganz einfach einen Cronjob (geplanter Task) erstellen und verwalten könnt.
Bei gemieteten managed Servern muss ein Cronjob direkt beim WebHoster beantragt werden. Bei dedizierten Root Servern und vServern wird ein Cronjob folgendermaßen angelegt:
Bereits erstellte Cronjobs anzeigen lassen
Mit folgendem Befehl könnt ihr bereits erstellte Cronjobs anzeigen lassen
[bash]crontab -l[/bash]no crontab for root
Wenn ihr als root eingeloggt seid, könnt ihr die Cronjobs von jedem User anzeigen lassen:
[bash]crontab -u user1 -l[/bash]Neuen Cronjob erstellen und die Syntax verstehen
Folgender Befehl öffnet uns das Cronjob File mit dem Standardeditor
[bash]crontab -e[/bash]Wenn noch kein Task erstellt wurde steht in der Datei lediglich eine Zeile mit der Kurzform, was die einzelnen Spalten bedeuten.
[bash]# m h dom mon dow command[/bash]Ein Cronjob setzt sich daher aus folgender Syntax zusammen:
Jeder Stern oder jede Zahl wird durch ein Leerzeichen getrennt und anschließend folgt der Befehl
[sam id=’2′ codes=’true‘]Beispiele aus der Praxis und genaue Erläuterung
Ruft jeden Tag um 00:30 ein PHPSkript von einer URL auf:
[bash]30 0 * * * /usr/bin/curl http://www.domain.com/php_jobs/sql_job.php[/bash]Startet zu jeder vollen Stunde einen Zeitabgleich mit einem Zeitserver:
[bash]0 * * * * /usr/sbin/ntpdate zeit.domain.com[/bash]Führt jede Minute den Ping Befehl aus:
[bash]* * * * * /bin/ping 192.168.1.1[/bash]Startet jeden Samstag um 22:10 ein lokales Shellskript:
[bash]10 22 * * 6 /usr/src/dump.sh[/bash]Führt jeden 10. des Monats um 23:45 einen mysqldump aller Datenbanken aus:
[bash]45 23 10 * * /usr/bin/mysqldump -uroot -ppassword –opt –all-databases > /usr/src/dump.sql[/bash]Startet jedes Jahr am 1.1. (Neujahr) um 01:00 einen Zeitabgleich mit einenem Zeitserver:
[bash]0 1 1 1 * /usr/sbin/ntpdate zeit.domain.com[/bash]Geteilte Cronjobs (alle x Mintuten, alle x Stunden,…)
Cronjobs sind in ihrer Ausführung sehr flexibel, und so können die Werte auch entsprechend aufgeteilt werden, um einen Cronjob alle x Minuten oder alle x Stunden ausführen zu lassen. Realisiert wird der Befehl durch einen / (Slash). Anhand folgender Beispiele wird der Vorgang verdeutlicht:
Cronjob alle 2 Stunden zu jeder vollen Stunde ausführen:
[bash]0 */2 * * * /usr/bin/backup.sh[/bash]Cronjob alle 10 Minuten ausführen:
[bash]*/10 * * * * /usr/bin/backup.sh[/bash]
Pretty good post. I just found your blog and wanted to say
that I’ve really enjoyed reading your blog posts. Any way
I’ll be subscribing to your feed and I hope you write again soon!
Hi,
danke für die super Anleitung, somit muss ich nicht immer manuell meine awstats script ausführen.
Danke Dustin
Sehr gute Erklärung.
Damit ließ sich das Einrichten des Cronjobs auch für mich als Neuling leicht machen.
Vielen Dank! 🙂
Auch wenn der Artikel jetzt schon etwas älter ist, hier auch nochmal mein Lob: ein gelungener Artikel, der die wichtigsten Informationen zur Einrichtung von Cronjobs beinhaltet. Damit kriegen wohl auch Unerfahrenere die Einrichtung gut hin.
„Bei gemieteten managed Servern muss ein Cronjob direkt beim WebHoster beantragt werden“ – Bei Webspace ebenso wie bei managed Servern ist das leider nicht immer möglich. Häufig kann man dafür dann aber auf externe Cronjob-Anbieter zugreifen, die dann eine URL abfragen. Der Nachteil dabei ist natürlich, dass sich beispielsweise Perl oder Python-Skripte nicht so bequem mit Parametern starten lassen wie über einen Cronjob via Crontab-Datei.
Auf meiner Website habe ich einige Cronjob-Anbieter getestet, für all die, die also keinen Zugriff auf die Cron-Datei des Servers haben, könnte ein solcher Anbieter interessant sein.
wie konnte man eione nachicht an alle senden die am terminal arbeiten.
bzw 5 min vor einem Server reboot
also eine anzeige Warnung bitte alles abspeichern server wird in 5 min Rebootet blabla.
Das lässt sich einfach mit dem shutdown-Befehl machen:
shutdown +5 „Der Server wird gleich neu gestartet. Bitte alles abspeichern“
Klasse Anleitung!
Aber:
Was muss man machen, damit so ein cronjob in einem anderen Benutzerkontext (als www-data) läuft?
Autschn!
Hat sich erledigt, manchmal sieht man echt den Wald vor lauter Bäumen nicht…
Gut illustriert! Die Cronjobs werden typischerweise unter
/var/spool/cron/crontabs/ abgelegt. Ist praktisch wenn man als root zum Beispiel schnell mal mit vi drüber schauen oder ändern möchte.
Endlich eine gute Doku. Danke!