CRON tut es nicht wirklich

  • Hallo zusammen,

    ich versuche auf Raspbian das phpServerMonitor-Projekt (http://www.phpservermonitor.org/) zum Laufen zu bringen. Dazu habe ich PHP, MySQL und Lighttpd installiert. Das Projekt an sich läuft problemlos, jedoch habe ich Probleme mit dem Cron. Da steht nun drin:

    Code
    */2 * * * * root php /var/www/cron/status.cron.php

    .
    Führe ich den Befehl von der Shell aus, so wird der Serverstatus auch aktualisiert. Über Cron leider nicht.
    Nun habe ich mal das CRON-Logging aktiviert und sehe auch, dass der Job gestartet wird:

    Code
    Apr 13 13:58:01 pi1 /USR/SBIN/CRON[10323]: (root) CMD (root php /var/www/cron/status.cron.php)
    Apr 13 13:58:01 pi1 /USR/SBIN/CRON[10322]: (CRON) info (No MTA installed, discarding output)

    Die Meldung zum fehlenden MTA bekomme ich weg, indem ich die Scriptausgaben in's Nirgendwo kanalisierte (>/dev/null 2>&1), jedoch bring mich das keinen Schritt weiter.

    Hat jemand eine Idee, warum der Job nicht das Gleiche macht, wenn er über den Cron ausgeführt wird, wie unter dem User root auf der Console (wobei root schon der verzweifelte Versuch ist, Rechteprobleme auszuschließen).

    Ich vermute, dass mir das Script im Cron eine Fehlermeldung auswirft, mit der ich zuerst auch etwas auf der Console zu kämpfen hatten:

    Code
    This script can only be run from the command line.

    Sprich also, dass die Sache nicht im CLI-Mode ausgeführt wird. Das habe ich grundsätzlich durch Installation des PHP-CLI-Paketes gelöst, doch scheinbar nicht für den Cron? Starte ich jedoch PHP mit voller Pfadangabe (egal ob /usr/lib/cgi-bin/php oder /etc/alternatives/php) gibt es die Fehlermeldung auf der Konsole. Auch die Startoption -C bringt nichts...

    Nun habe ich mal etwas Logging angeschmissen:

    Code
    */2 * * * * root php /var/www/cron/status.cron.php >> /var/log/phpservermon.log

    Die Logdatei wird angelegt, jedoch ist nicht die erwartete Fehlermeldung drin, was mich noch nachdenklicher stimmt.

    ratlose Grüße
    Niels

    Einmal editiert, zuletzt von Niels$ (13. April 2014 um 17:58)

  • Danke Hans-Peter,

    aber wenn ich mich als root anmelde, dann bin ich schon su und sudo geht nicht mehr. Von daher - jein, ich habe es mit sudo gestartet.

    machtvolle Grüße
    Niels

  • Ich nehme an, dein cron-Eintrag steht in der /etc/crontab

    Ich hatte erst ein ähnliches Problem (auf RHEV), dass der Aufruf in der Shell funktioniert, aber mit Eintrag in der /etc/crontab nicht.
    Ich hab den Aufruf dann einmal in die /var/spool/cron/crontabs/root gesetzt (mit crontab -e), dann hat auf einmal der Aufruf funktioniert. Ich habe dann noch ein paar Linux-Zertifizierte Kollegen befragt, es hatte aber keine eine richtige Erklärung, nur eine Vermutung, dass es an dem Verwendeten Environment liegt, das verwendet wird.

    lg
    Bernd

    Anfragen ausserhalb des Forums (Mail o.ä.) werden ignoriert!

  • Nö, ich hatte schon mittels crontab -e den Eintrag gemacht und so ist dieser in der /var/spool/cron/crontabs/root zu finden.
    Nun habe ich das Ganze mal in einem 'echten' Debian auf einer VM nachgestellt. Das Fehlerbild konnte ich zuerst auch nachstellen. Dann habe ich jedoch herausgefunden, dass ich anstelle des Befehls php den Befehl php5 verwenden muss, nun funktioniert es da. Nur leider hilft das unter Raspberian nicht...

    =(
    Niels

    Oh man :wallbash:
    Kaum habe ich das hier gepostet, habe ich nochmal mit dem Debian verglichen und erkannt, dass das Beispiel vom phpServerMonitor falsch ist / nicht passt. Damit bin ich mal wieder ein Opfer von Copy&Paste geworden! Der User hat darin nichts zu suchen. Kaum macht man es richtig, funktioniert es:

    Code
    */2 * * * * root php /var/www/cron/status.cron.php

    gelöste Grüße
    Niels

    Einmal editiert, zuletzt von Niels$ (17. April 2014 um 19:48)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!