Crontab per php anlegen

  • Moin!


    Ich habe folgendes Problem:
    Ich habe meinen RPi als Webserver eingerichtet und möchte per php einen Crontab anlegen.
    Ich habe wie folgt ein Script angelegt:


    [code=php]<?php
    exec('echo " 0-59 * * * * sudo gpio -g write 17 1"| crontab -');
    ?>[/php]


    Ich möchte an diesem Beispiel also zu jeder Minute, dass die an GPIO 17 angeschlossene LED eingeschaltet wird.
    Es wird leider nicht ausgeführt. Muss ich noch Rechte vergeben, oder warum passiert nichts?
    Der Cronjob scheint gar nicht erst angelegt zu werden.


    Grüß
    Henning

  • Statt der 0-59 würde ich gleich auch * schreiben.
    Und bei gpio würde ich den kompletten Pfad angeben, sonst findet das System den Befehl wahrscheinlich nicht.

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

  • Ich nehme mal an, dein Webserver läuft nicht unter dem User "pi"? Wenn du crontab ohne Parameter aufrufst, wird es für den aktuellen User aufgerufen, in diesem Fall wahrscheinlich www-data.

  • Danke für eure schnellen Antworten!


    Ich habs überprüft. Der Webserver läuft als 'www-data'
    Wie lasse ich den Webserver denn unter dem User "pi" laufen? Bzw. wie kann ich das php script als "pi" den cronjob anlegen?


    Mit dem ganzen Pfad hatte ich es auch schon probiert, hat leider nicht geholfen.

    Edited once, last by Bauer1 ().

  • Ein "man crontab" gibt folgendes zurück:

    Code
    SYNOPSIS
           crontab [-u user] file
           crontab [-u user] [-l | -r | -e] [-i] [-s]
    ...
    ...
    -u     Append  the  name  of  the user whose crontab is to be tweaked.  If this option is not given, crontab examines "your" crontab, i.e., the crontab of the person executing the command


    Also müsste deine Zeile ungefähr so aussehen:

    Code
    exec('echo " * * * * * sudo /vollständiger/Pfad/zu/gpio -g write 17 1"| crontab -u pi -');


    Der User pi sollte eigentlich die Berechtigung für die GPIOs haben.

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

  • Der gpio soll jede Minute eingeschaltet werden (auch wenn er schon eingeschaltet ist) ?
    Wann soll er denn ausgeschaltet werden ? Von allein geht der nicht wieder aus.


    MfG Turbotoni

  • Nein, es soll nur zu Testzwecken jede Minute starten, damit ich nicht lange warten muss um es auszuprobieren.


    Es funktioniert allerdings auch dann nicht, wenn ich direkt über crontab -e den Befehl eintrage.


    Laut log wird der Cronjob zwar ausgeführt, aber komischerweise tut sich nichts.. kann ich irgendwie genauere Informationen aus dem Logfile raussuchen?


    wenn ich direkt in die Konsole

    Code
    gpio write 0 1

    eingebe funktioniert alles tadellos.
    Gebe ich es als

    Code
    * * * * * gpio write 0 1

    in die crontab -e ein läuft es nicht. Auch nicht, wenn ich einen Benutzer eintrage. Ich bin am verzweifeln...