Crontab richtig einrichten - NEWBIE -

  • Hallo ich bin gerade etwas überfordert mit eine Umsetzungsidee.
    Wie ich einen Cronjob richtig aufsetzen und zum laufen bekommen.


    auf meine TS439 finde ich unter /etc/config/crontab


    ich hab jetzt ein PHP script was in regelmässigen abständen laufen soll jede Stunde einmal.
    mit wget soll eine Seiter heruntergeladen werden und bestimmte Begrifft filtern.


    Dazu hab ich dieses Gefunden und auch fast verstanden...
    * * * * * Aufruf-des-Skriptes (Befehl)
    | | | | |
    | | | | +---- Tag der Ausführung (0 -6, Sonntag = 0)
    | | | +------ Monat (1-12)
    | | +-------- Tag (1-31)


    In welchen Ordner lege ich am besten mein PHP Script rein, kann ich es ablegen wo ich möchte?
    Wie starte ich den crontab am besten zum programmieren ?


    Konnte leider keine so richtige Anleitung finden, vielleicht hab Ihr einige Anregungen !


    Thanks

  • Moin,
    Ich bearbeite die crontab wie folgt:
    Als allerersted kopiere ich sie mr zur Seite:

    Code
    crontab -l > PFAD/crontab.txt


    Wobei PFAD ein Pfad auf der Festplatte ist.
    Dieser Schritt muss nur einmal gemacht werden.


    Dann die Datei mit einem Editor bearbeiten (z.B. vi oder nano)
    Die Datei kopier ich danach nach /etc/config/crontab


    Diese dann einlesen und den crontab-Dienst neu starten:

    Code
    crontab /etc/config/crontab
    /etc/init.d/crond.sh restart


    Wichtig bei Eingaben in der crontab:
    Immer den vollen Pfad zum Programm angeben! :oops:
    Wo dein php script steht sollt egal sein, Hauptsache das aufrufende Programm
    (Z.B. w3m) hat Zugriff. :thumb:


    Glueck auf
    Ralph

  • Hi schwerdt, dank für die Rückmeldung.


    aber irgendwie will das nicht so richtig.


    ich hab meine php script im Ordner
    root/beispiel/beispiel.php


    mein crontab hat folgende Info
    */3 * * * /root/beispiel/beispiel.php


    wie kann ich den sowas mal testen ?

  • Hi,
    Das php-script selbet ist keine ausfūhrbare Datei, :-/
    sondern wird vom Server, bei Aufruf von einem client (Browser), interpretiert. Also der Webserver (z.B. Apache) benötigt eine php-Erweiterung um php skripte interpretieren zu können.
    Apache (mit php) ist auf dem Qnap installiert und muss nur über die Konfigseite aktiviert erden (webserver).
    Um sicher zu gehen, dass der Pfad vom Webserver erreicht wird, bitte erstmal alles auf "default" setzen,
    bei wäre das dann in:
    /share/HDA_DATA/Qweb/beispiel.php
    Habe aber auch ein kleineres älteres Modell...
    Wenn der Webserver von einem anderen Rechner erreicht wird, dort die php Datei aufrufen:
    DEINE_INTERNE_IP/beispiel.php
    Soweit der (manuelle) Aufruf übers Netzwerk.


    Installation eines "Kommandozeilen-Browsers"
    Über QPKG kannst Du den ipkg Package manager installieren (sozusagen ine Kommandozeilen-Erweiterung für den Qnap). Dann sind neue Funktionen in /opt/bin verfügbar, wenn diese installiert wurden;
    (Einloggen ssh bzw. putty auf Kommandozeile setze ich mal voraus - andernfalls hier im Forum finden, siehe auch das wiki)
    Beispiel:

    Code
    ipkg update ipkg install w3m


    dann mal auf der Kommandozeile testen, ob das php skript erreicht und ausgeführt wird:

    Code
    w3m DEINE-IP/beispiel.php


    Ggf. das Skript anpassen.


    Aufruf in der Crontab:
    Wenn es nicht ausgeführt wird eine php Datei mit phpinfo erstellen - bitte selber rausfinden wie das geht) und aufrufen, dann kannste die Versionen etc. checken. :D
    Wo dein w3m installiert ist rausfinden mit:

    Code
    which w3m                                                                                                                             /opt/bin/w3m


    ((Also bei mit ist /opt/bin/w3m die Antwort ... :o )
    Aufruf über die crontab wie oben beschrieben mit vollem Pfad und dann die URL,
    die sich aus der IP deines NAS und dem php Skript zusammen setzt.


    Um das php-Skript über die crontab aufzurufen musst Du einen Kommandozeilen fähigen Browser installieren.
    (Ich glaube php lässt sich auch als Programm installieren, hab ich aber nicht getestet)
    das könnte in der Crontab dann so aussehen:

    Code
    11 2 * * * /opt/bin/w3m MEINE_IP/MEIN-BEISPIEL-SKRIPT.php


    das würde täglich um 2:11h besagtes Skript ausführen.


    :mrgreen:
    Viel Glück
    Ralph

  • Zitat von "home306"

    /root/beispiel/beispiel.php


    Das ist ein recht unglücklich gewählter Ort. Das Script sollte schon irgendwo auf der Platte liegen, sonst ist es bei einem Neustart weg.
    Entweder, du legst es in den WEB Ordner

    Code
    /share/Web


    oder legst dir eine entsprechende Freigabe dafür an und legst es da hinein

    Code
    /share/DeineFregabe


    Schau dir mal das hier http://forum.qnapclub.de/viewt…php+script+crontab#p99022 an. Da wird auch ein php-Script per Cron gestartet.

  • Hi,


    Zitat von "schwerdt"

    Hi,
    Das php-script selbet ist keine ausfūhrbare Datei, :-/


    Da hast du Recht, wie jedes andere Skript auch.

    Zitat


    sondern wird vom Server, bei Aufruf von einem client (Browser), interpretiert. Also der Webserver (z.B. Apache) benötigt eine php-Erweiterung um php skripte interpretieren zu können.


    Um ein php-Skript auszuführen braucht es keinen Webserver und keine php-Erweiterung für diesen.
    Er will sich doch die Ausgabe nicht im Browser anschauen.


    Du brauchst PHP als Interpreter auf der QNAP. Das sollte vorhanden sein, sicher nicht in der aktuellen Version, aber es ist da. Die Alternative wäre PHP als IPKG.


    Du solltest das Skript auf der Konsole aufrufen und nach Fehlermeldungen schauen. Erst wenn es da sauber läuft, können wir über die crontab reden, schreiben.

  • Hallo Froschn (scherz)
    Ja das mag sein, das der Interpreter (ich hatte das php-Programm :mrgreen: genannt, was wohl nicht ganz richtig ist). Ich hatte das bei mir nicht zum Laufen gebracht, :oops: deshalb. Mein Umweg (der doch aber funktionieren müsste, oder ?)
    Gruss Ralphn :)

  • Das ist doch öhm Kacke, ein Skript so zum laufen zu bringen.
    Skript auf der Shell ausführen und nach Fehlermeldungen gucken, das wäre der erste Schritt.

  • Hi,


    in dem Zusammenhang habe ich auch eine Frage und möchte dabei auch die Abgrenzung zu IPKG, Dienste und inotify genauer ansprechen:


    • (Topic) Regelmäßige Ausführung eines Scripts (PHP, sh,...)
      - Script an sinnvoller Stelle ablegen. Bei PHP z.B. /share/Web, bei sh habe ich mir einen eigenen Script-share gemacht, auf den meine Familie nicht darf
      - Script erst einmal im Einzelaufruf fehlerfrei machen
      - Script in crontab nach Bedarf eintragen
    • Ein Dienst, der sauber gestartet und gestoppt werden will (IPKG)
      - diensteigenes Init-Script anlegen unter /opt/etc/init.d
      - Anpassung der autorun.sh --> http://forum.qnapclub.de/viewtopic.php?f=208&t=14277
    • was ist mit inotify (als wunderbare Lösung für manche Fragestellungen)? Ist kein regelmäßiges (kurzlaufendes) Script, aber auch kein Dienst im eigentliche Sinne. Doch inotify bleit ja nach dem Aufruf dauerhaft auf "Horchposten" (mit Option -m). Rein technisch ist es ja ein einmalig nach jedem Reboot aufzurufendes sh-Script, aber es bleibt mit dem darin verwendente inotify mit seinen Anweisunge ja dauerhaft aktiv.
      - wo startet man so ein Scipt am sinnvollsten. Macht man dafür auch ein Init-Script und startet es auch über die autorun.sh?
      - Wir würde der Stop-Teil des Scripts aussehen?
      - Oder ganz anders?
      - Ganz allgemein: Verhindert ein inotify das Schlafenlegen der HDD, wenn das "abgehörte" Verzeichnis (naturgemäß) ein share ist?


    Das beginnt schon fast OT zu werden, gehört aber als Zusammenfassung irgendwie doch auch dazu, oder? :oops:


    Danke und viele Grüße,
    Carsten

  • Ich ha w3m nun auch endlich zum laufen bekommen .
    Musste noch termcap und xterm nachinstallieren.
    Der Cronjob scheint aber funktionslos.
    Wenn ich nun die PHP in der Putty shell aufruffe, wird mir nur der Quelltext angezeigt. DIe Befehle aber nicht ausgeführt.
    Hatte das schon mal. Da stand als PHP einleiter nur "<?" statt "<?php" in W3m führt aber leider beides nur zur Quelltext Anzeige.
    Was tun?