HowTo: PHP-Datei per Cronjob unter OS X ausführen

10. November 2009

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

  1. Datei erstellen: Mit Texteditor oder gleich im Terminal: nano cronjob.txt
  2. 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.

  3. 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.

  4. Cronjob importieren: crontab cronjob.txt
  5. Alle Cronjobs anzeigen lassen: crontab -l
  6. Cronjob editieren:


    export EDITOR=nano
    sudo crontab -e

  7. That’s it!

Schneller geht die Erstellung vielleicht mit dem Progrämmchen cronnix. Gleich ist es wieder soweit und mein Cronjob twittert… wie süß!

micha | Newsblog | Kommentare | Trackback | Tags: , , , , Zum Seitenbeginn springen

Kommentar schreiben

  •  
  •  
  •  

Verfolge neue Kommentare zu diesem Beitrag mit diesem Kommentar-Feed.

design est!

Zufallsbilder

Grand Canyon: Agave utahensisWien: FlaggenWeintraubeColors of NespressoGardaseeRoute 66: Seligman, ArizonaFlorenz bei NachtJamboree ShootingWerk2: Eröffnung Halle D – Elsterclub #1New York City: Radio City Music HallNew York City: SubwayIsland #2
Alle Bilder im Fotoblog