crontab

  • Hallo
    wie kann ich ein skript über crontab starten lassen? Ich habe schon das system (0 2 4 * *) verstanden aber was nach den zahlen kommt kapier ich nicht. Ich will das jeden Tag 16:00 ein python skript was ich erstellt habe indem ich einfach im terminal: nano Name.py eingegeben habe gestartet wird.
    Vielen Dank für eure Antworten :danke_ATDE:

  • wenn du mit sudo nano /etc/crontab aufrufst sollte unter anderem sowas da stehen:

    Code
    # m h dom mon dow user  command
    17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
    25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
    47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
    52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
    0 1     * * *   root    php5 /etc/PiData/script/php/wpDownload/wpDownload.php
    0 22    * * *   root    bash /etc/cronbackup/backupAll
    #

    in der obersten Zeile steht die Zuordnung zu den Spalten:
    m = Minuten
    h = Stunde
    dom = day of month / Tag des Monats
    mon = Monat
    dow = day of week / Wochentag (für wöchendlich)
    user = der der es ausführen soll (meistens root)
    command = was halt gemacht werden soll

    wenn Du damit leben kannst das Dein script auch um 6:25 ausgeführt wird stell es einfach in das /etc/cron.daily -Verzeichnis.
    sonst orientiere Dich an meinen beiden Jobs (PHP um 1:00 und bash um 22:00). Du muss verm. nur Python selbst mit aufrufen wie PHP oder bash.

    Achja, bei mir sind zwischen Zeit, Tage, User und Kommando ein Tab (0 22 [TAB] * * * [TAB] root [TAB] bash /etc/cronbackup/backupAll)

    Eine gute Seite ist https://wiki.ubuntuusers.de/Cron/

    Edited once, last by Alti (October 30, 2016 at 5:56 PM).

  • Hast Du schon mal mit unixoiden Systemen gearbeitet? Die unterscheiden zwischen Groß- und Kleinschreibung.

    Außerdem rufst Du mit Deinem Kommando den Editor (nano) auf mit dem script zum editieren. Darüberhinaus wenn Du sowieso das mit sudo aufrufst warum packst Du den Aufruf nicht direkt in die /etc/crontab mit root als user?

    Wo liegt Dein Script? Angenommen in /usr/bin/script/python/bewässerung.py
    Der Eintrag in der /etc/crontab würde lauten:

    Code
    13 12      * * *     root       python /usr/bin/script/python/bewässerung.py


    und die # am Ende der Liste nicht vergessen bzw nicht löschen. (die größeren Lücken sollen TABs sein)

    Bei Deiner UserCrontab lässt Du einfach root weg, bin mir aber nicht ganz sicher, weil ich alles in die /etc/crontab packe.

  • Wenn Du Dein Script unter dem User Pi laufen lassen kannst, dann waere das zu empfehlen. In diesem Fall, kannst Du mit (alles unter use pi, ohne sudo):

    Code
    crontab -l > mycrontab-l


    die private crontab für den user pi speichern, dann mit die Datei mycrontab-l wie on den Beiträgen davor editieren und anschliessend wieder mit

    Code
    crontab mycrontab-l


    ins system einchecken. Das ist dann ab sofort aktiv und bleibt es auch nach einem neustart.

  • Wenn Du es ganz richtig machen möchtest, dann
    1. Überlege, ob es zwingen als root laufen muss
    2. wenn nicht, dann wären die richtigen plätze z.B.

    Code
    /usr/local/bin/
    /home/pi/bin/


    3. wenn doch, dann kann es im prinzip natuerlich in /root/ bleiben. Es waere jedoch ungewöhnlich. /root/bin/ waere schon besser. Eigentlich gibt es für ein solches Script dann noch /bin und /sbin/, aber für selbstgemachte Programme, welche also nicht standard sind, ist das eigentlich der verkehrte platz.

    Es kommt vielleicht darauf an, unter welchem Account Du die Wartung machen wirst. Normalerweise ist das ja der Account: pi. Und dann würde ich solche Scripts in /home/pi/bin/ ablegen, damit man dort leicht änderungen machen kann. Ich wurde ausserdem noch git verwenden, damit man bei den Aenderungen noch den Überblick behält, aber das ist noch eine andere Geschichte.

  • bei crontab -e musst Du den root weglassen.

    außerdem musst du python vor den Pfad setzen.

    Für crontab -e

    Code
    1 16 * * *        python /usr/bin/bewässerung.py

    und für sudo nano /etc/crontab

    Code
    1 16 * * *        root    python /usr/bin/bewässerung.py

    oder ist es in python 3 geschrieben?

    Edited once, last by Alti (October 31, 2016 at 4:22 PM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!