Nachdem ich gestern meine MensaTwitterMaschine angeworfen habe, musste ich auch feststellen, dass die Sache mit den Cronjobs unter Mac ein wenig anders ist. Wir haben hier einen Server unter Tiger laufen. Im Allgemeinen hat Apple ja von Cronjobs auf launchd umgestellt und empfiehlt den Einsatz von Crontabs nicht mehr. Ich habe kurz in die launchd-Doku reingelesen, mir wurde aber nicht wirklich klar, wie ich Zeitbereiche (z.Bsp. nur Wochentags) angebe kann. Drum bin ich wieder zu den guten alten Cronjobs zurückgekehrt.
Vornweg: Das einzig verwirrende ist, dass in der Beispiel crontab unter /etc/crontab
steht, man solle den ausführenden Nutzer (who) angeben:
# The periodic and atrun jobs have moved to launchd jobs
# See /System/Library/LaunchDaemons
#
# minute hour mday month wday who command
Damit kommt man aber nicht ans Ziel.
Wie fängt man also am Besten an? Entweder man erstellt eine Datei, schreibt dort alles notwendige rein und importiert diese als Cronjob (Punkt 1-4) oder man schreibt gleich mit Hilfe des crontab-Befehls (Punkt 6).
- Datei erstellen: Mit Texteditor oder gleich im Terminal:
nano cronjob.txt
- Cronjob definieren. Hier ein Beispiel für den Dateiinhalt:
# The periodic and atrun jobs have moved to launchd jobs
# See /System/Library/LaunchDaemons
#
# minute hour mday month wday who command
00 11 * * 1-5 /Users/benutzer/cron.sh >/dev/null 2>&1
Dieser Job wird jeden Wochentag 11 Uhr ausgeführt. Es wird ein Shell-Skript aufgerufen und die Ausgabe des Skripts ins Nirvana geführt. Man kann die Ausgabe selbstverständlich auch in eine Log-Datei weiterleiten, wenn man will.
- Shellskript
cron.sh
basteln, welches ein PHP-Skript auf einem Server ausführt:
#!/bin/sh
/usr/bin/curl -s http://server.com/dein/pfad/zum/phpskript.php
Darauf achten, dass das Shellskript von Benutzer ausführbar ist. Notfalls ein
chmod 755 cron.sh
im Terminal ausführen. - Cronjob importieren:
crontab cronjob.txt
- Alle Cronjobs anzeigen lassen:
crontab -l
- Cronjob editieren:
export EDITOR=nano
sudo crontab -e
- That’s it!
Schneller geht die Erstellung vielleicht mit dem Progrämmchen cronnix. Gleich ist es wieder soweit und mein Cronjob twittert… wie süß!