[Howto] crontab

  • Hai Christian,


    vielen Dank für die Links ! Haben mir sehr weit geholfen. Doch jetzt mein Notruf:
    Via Putty bin ich auf die Crontab gekommen. Soweit so gut....also editieren. Nach dem Editieren bin ich
    mit "ZZ rausgegangen.
    Hinterher das Putty neugestartet und wollte nachsehen, ob die Änderung zum tragen kam. .....meine Crontab lässt
    sich nicht mehr laden. auch nach einem Neustart der NAS ....es wird keine Crontab mehr angezeigt.
    Was kann mir nun passieren ? Kann/soll ich eine neue anlegen ?


    Dankeschön und Grüße


    Oli

  • Zum Speichern und Beenden nur :wq schreiben, das Doppelpunkt für Commando und wq für schreiben und quit.
    Was ZZ in diesem Fall macht, ist mir unbekannt.
    Eine neue crontab zu erstellen, wenn diese wirklich leer bzw. gelöscht ist, bleibt die einzige Möglichkeit.

  • Hallo Stefan,


    ich habs gefunden....die Datei ist nicht weg, sondern ich habe bei dem Commando
    /etc/config/crontab das Slash am anfang vergessen....vermute ich zumindest...
    Jetzt nach der Musikprobe gings zumindest wieder. Auch die Änderung von mir war noch vorhanden.
    Den Ausstieg mit ZZ habe aus dem Wikipedia-Artikle, den Christian oben verlinkt hat.


    Soweit so gut, jetzt hoffe ich nur, daß meine Zeile auch funktioniert.
    Was passiert eigentlich, wenn der CronJob die auszuführende Datein nicht findet ?


    Grüßle
    Oli

  • Hai zusammen,


    wie befürchtet passiert natürlich rein gar nichts....
    Vielleicht könnt Ihr mir moch ein wenig auf die Sprünge helfen?
    ich habe ein File erstellt, welches mir über PHP von eine anderen IP im Netz Temperaturmesswerte abholt und in die MySQL DB schreibt. Solange
    ich das Script im Browser ausführe funktioniert es. Dieses Scrip heißt: "CronJob.php" und liegt direkt im Root von QWeb.


    In meiner CronTab hab ich nun folgende Zeile eingefügt:
    */5 * * * * /QWeb/CronJob.php


    Stimmen die Pfadangaben so ?


    Grüße
    Oli

  • Dein grundlegender Fehler ist die Annahme, das die Shell php-Dateien interpretieren kann.
    Wenn du die php-Datei über den Webbrowser aufrufst, wird der Web-Server die Datei an den PHP-Interpreter übergeben und die Ausgabe zum Client versendet.
    Also müßtest du erstmal ein Programm aufrufen, das diese Datei interpretiert, jedoch habe ich den PHP-Interpreter außer der Library-Datei für Apache nichts gefunden.
    Rufe deine php-Datei mit

    Code
    wget http://192.168.0.2/index.php


    auf, damit wird die Datei vom Web-Server/PHP interpretiert und alle Befehle wie gewünscht ausgeführt.

  • Hai Stefan,


    hossa...das wars !
    Es funktioniert und ich bekomme nun alle 5 Minuten die aktuellen Temperaturen von meiner Heizung incl Solaranlage auf meine
    Datenbank gespeichert... :D


    Vielen herzlichen Dank !


    Grüße
    Oli

  • hmm..ich muss dann leider auch mal fragen, weil bei mir klappt es auch nicht.
    Ich habe folgendes in /etc/config/crontab mittels WinScp Editor eingefügt:


    */1 * * * * php /share/MD0_DATA/Qweb/opengoo/cron.php > cron_log.txt 2>&1


    bzw. auch ein Test mit:


    */1 * * * * wget http://192.168.1.24/opengoo/cron.php > cron_log.txt 2>&1


    Und anschliessend über putty mittels crontab /etc/config/crontab das ganze neu gestartet.


    Beides funktioniert nicht, es tut sich einfach nichts.


    Auch ist die Datei /var/log/messages total leer (0 bytes)...hätten dort nicht Einträge landen sollen die von crontab ausgeführt werden? Es sind noch andere (Defaulteinträge der NAS) in der crontab drinnen, aber offenbar werden die auch nicht ausgeführt...denn wie erwähnt es sind keine log-einträge zu sehen.


    Kann mir jemand auf die Sprünge helfen, worin das Problem liegen könnte?


    Danke und liebe Grüße - Claudio


    EDIT:


    hmm..also offenbar hat es einmalig funktioniert...denn ich hatte plötzlich einige Mails mehr gehabt die nur per cronjob geholt werden konnten.....aber wi ekann ich den cronjob überprüfen? Wie erwähnt in der /var/log/messages steht nichts drinnen, nach wie vor 0 bytes gross.


    Gibt es einen Befel oder besser wo legt QNAP logs vom crontab hin?

    Einmal editiert, zuletzt von christian () aus folgendem Grund: Doppelte Beiträge sind zu vermeiden, siehe Forenregeln!

  • Ich hätte auch noch ein Problem zum lösen.....


    Hallo erst mal,
    und zwar habe ich die letzten Tage damit verbracht, meinen 219p via optware so vorzubereiten, das er eGroupware fähig wird.
    Das habe ich nun endlich fertig. Es werden alle Funktionen von eGroupware unterstützt.
    Genau,
    BIS AUF:
    crontab


    Laut Anleitung des Anbieters muß in der crontab ein Eintrag gesetzt werden der so aussehn sollte:
    /5 * * * * <webserver-user> /usr/bin/php -q <eGW-install-dir>/phpgwapi/cron/asyncservices.php <domain>


    Wenn ich das richtig verstehe, dann sollte für <webserver-user> der User angegeben werden der den Apache betreibt.
    Ich meine das wäre der User 501. Kann ich das irgendwie abfragen?
    <eGW-install-dir> sollte bei mir dann /share/qweb/egroupware sein?


    In Summe habe ich folgendes in die crontab geschrieben:
    /5 * * * * 501 /usr/bin/php -q /share/qweb/egroupware/phpgwapi/cron/asyncservices.php default


    Im Anschluß habe ich den Qnap neugestartet.
    Leider ohne Erfolg.

  • Hallo Timer,


    da fallen mir gleich 2 Dinge auf, die UserID und der Pfad zur php-Datei.
    1.) Die crontab der QNAP-NAS verwendet keine Angabe für die UserID, es gibt nur eine crontab und wird alles als admin ausgeführt.
    2.) Der Pfad zur PHP-Datei wird wohl nicht korrekt sein.
    Bei meiner TS-239 finde ich die php in "/usr/local/apache/bin".
    Suche bitte mal mit

    Code
    find / -name php


    danach und trage dann diese Pfad in die Zeile ein.


    Neustarten brauchst du das NAS für die Änderung in der crontab nicht.
    Einfach die Datei mit "crontab /etc/config/crontab" neu einlesen lassen.


    Stefan

  • Hallo,


    ja aber ich lasse den Apache2 als 501 laufen!
    Macht das dann keine Probleme wenn das verschieden User sind?
    Und? Soll ich den User einfach weglassen?
    Wie sollte die Zeile deiner Meinung nach dann aussehen?


    den Pfad den ich mit find / -name php erhalte dann am Anfang eintragen?
    /mnt/ext/opt/apache/bin/php


    Könnte stimmen,oder?
    Da ich den Apache2 als optware installiert habe.


    Also
    /5 * * * * /mnt/ext/opt/apache/bin/php -q /share/qweb/egroupware/phpgwapi/cron/asyncservices.php default
    eintragen?

  • Zitat von "Timer"

    ja aber ich lasse den Apache2 als 501 laufen!


    Das spielt keine Rolle.


    Zitat von "Timer"

    Und? Soll ich den User einfach weglassen?


    Ja, das es sonst als Befehl interpretiert werden würde, den es natürlich nicht gibt.


    Zitat von "Timer"

    Da ich den Apache2 als optware installiert habe.


    Dann sollte es noch ein zweites mal finden, in etwa in "/share/HDA_DATA/.qpkg/Optware/bin/php".


    Zitat von "Timer"

    /mnt/ext/opt/apache/bin/php


    Das ist der QNAP-eigene Apache.


    Als Info:
    Wenn der PHP-Interpreter direkt aufgerufen wird, wird der Apache außenvorgelassen.
    Gebe es eine Ausgabe, würde diese in der Konsole ausgegeben.

  • Ok hast recht.


    /5 * * * * /share/MD0_DATA/.qpkg/Optware/bin/php -q /share/qweb/egroupware/phpgwapi/cron/asyncservices.php default
    Also sollte das nun die Lösung darstellen....?


    Habe die Zeile mal zum test in der Konsole eigegeben!
    Antwort ist
    -sh: /5: No such file or directory

  • Zitat von "Timer"

    -sh: /5: No such file or directory


    Ok, darauf hatte ich nicht geachte.
    Es fehlt ein * vor dem /5 :

    Zitat von "Timer"

    */5 * * * * /share/MD0_DATA/.qpkg/Optware/bin/php -q /share/Qweb/egroupware/phpgwapi/cron/asyncservices.php default


    Du mußt auch die Groß/Klein-Schreibung beachten (Qweb).

  • mmm.


    Bekomme immer noch die gleiche Fehlermeldung.
    Habe die Zeile von dir noch mal es Groß/Kleinschreibung angeht überprüft.
    Das stimmt auf jeden Fall.
    Der * ist drin.......


    Trotzdem gleicher Fehler
    */5: No such file or directory

  • ich gebe die Zeile in Putty ein!
    Ich habe mich als Admin angemeldet.


    Kann ich die Zeile so nicht vorab testen?

  • Nein nicht die komplette Zeile, da die crontab durch ein Programm interpretiert wird und nicht direkt ausgeführt.
    Damit sollte es dann gehen:

    Code
    /share/MD0_DATA/.qpkg/Optware/bin/php -q /share/Qweb/egroupware/phpgwapi/cron/asyncservices.php default


    Die ersten 5 Stellen sind für die Zeitangabe der Ausführung danach der Befehl und erst dieser kann dann auch in der Kommando-Zeile ausgeführt werden.

  • Ok,
    dann bekomme ich folgende Meldung:


    PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'libgd.so' in Unknown on line 0
    PHP Warning: Module 'mysql' already loaded in Unknown on line 0
    PHP Warning: Cannot load module 'pdo_mysql' because required module 'pdo' is not loaded in Unknown on line 0
    Segmentation fault


    Wenn ich den Pfard des internen Webservers angebe bekomme ich keine Fehlermeldung.
    Allerdings passiert dann auch nichts.
    Die Software liegt ja auf dem anderen.


    Ist zu Wahnsinig werden.


    Edit: Habe den Service nun am laufen, die oben angegebene Zeile ist auf jeden Fall schon mal richtig! Danke nochmal für die Hilfe hier.
    Der Fehler lag bei mir in der PHP.ini
    Ich mußte:
    1.den Extension Eintrag für die libgd.so entfernen. Da es die Datei überhaupt nicht gibt.
    2.der Extension Entrag für pdo noch eintragen.
    Ich bekomme nun zwar immer noch die Meldung das, das Modul MySQL bereits läuft.
    Aber die Funktion wird trotzdem ausgeführt.


    Alles bestens.....