Cron jobs

  • Hallo,


    Einleitung


    Mit Cron kann man Befehle regelmäßig ausführen. Zum Beispiel wäre der Shutdown des Systems jede Nacht oder das Ausführen von Backup-Skripten. In dieser Anleitung wird die grundlegende Konfiguration und Nutzung per Konsole erklärt.



    Tutorial


    Code
    crontab -e  #für den Eingeloggten user sudo crontab -e  #für den root (Befehle mit sudo)



    Vorab erklärung wie man Zeilen einträgt und was sie Bedeuten


    Code
    1.M     2.S     3.T     4.M     5.W 
    1. M = Minute  (0 - 59)2. S = Stunden (0 - 23)3. T = Tag     (1 - 31)4. M = Monat   (1 - 12)5. W=Wochentag (0 - 7) (Sonntag ist 0 und 7)



    Machen wir mal ein Beispiel das der Rechner jeden Tag einmal Neustarten soll.


    Code
    1. sudo vi down.sh              # Erstellen einer sh datei2. sudo reboot                    # tragen wir in die erstellte sh Datei ein anschließend datei schließen3. sudo chmod 755 down.sh  # sh Datei muss ausführbar sein



    Code
    sudo crontab -e     #öffnen der Crontab mit Root-Rechten


    und tragen am Ende der Datei ein


    Code
    0 23 * * * <absoluter Pfad der sh datei>/down.sh



    Die Datei wird Punkt 24:00 Uhr jeden Tag, Monat und Woche ausgeführt.


    Mfg

  • Zur Verdeutlichung:


    Code
    *     *     *     *     *  Befehl der ausgeführt werden soll
    -     -     -     -     -
    |     |     |     |     |
    |     |     |     |     +----- Wochentag (0 - 7) (Sonntag ist 0 und 7)
    |     |     |     +------- Monat (1 - 12)
    |     |     +--------- Tag (1 - 31)
    |     +----------- Stunde (0 - 23)
    +------------- Minute (0 - 59)

    Images

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

  • Hallo!


    Das Tutorial ist sehr gut! Jedoch habe ich eine Frage: Kann man irgendwie eine Ausgabe in dem down.sh hinbekommen? Also statt "sudo shutdown" irgendwas in Richtung "echo ..."? Das funktioniert jedoch nicht. Wie kann ich das realisieren?


    Liebe Grüße
    loirad

  • Hallo loirad,


    alle Ausgaben die durch einen Cronjob verursacht werden (Meldungen und Fehlermeldungen) werden stanadmäßig per E-Mail an das lokale Postfach gesendet. Cron führt die Befehle im Hintergrund aus und kann die Ausgaben nicht in einem Terminal oder in einer Konsole anzeigen.


    Gruß Georg

  • Vielen Dank für die Antworten!


    Kann man es irgendwie erreichen, dass (in meinem Fall die Temperatur) die Ausgabe in der Konsole erscheint?


    Liebe Grüße
    loirad

  • ... und wenn du deinem Script ein 'echo' einfügst sollte die Ausgabe in der Konsole erscheinen.
    nö - funktioniert nicht, habe es gerade ausprobiert.
    [hr]
    Habe doch noch 'ne Möglichkeit ... ,
    du leitest die echo ausgabe in eine Datei weiter

    Code
    #! /bin/sh
    ...
    ...
    ...
    echo zeige mir was an >> ausgabe.txt


    und lässt dir die Ausgabe mit

    Code
    tail -f ausgabe.txt


    anzeigen.
    Anders wird es wohl nicht klappen.

    waren das Zeiten, als Ordner noch Verzeichnisse waren

    Edited once, last by I.R.Gendwer ().

  • So ich habe jetzt folgendes in print.sh (in home/pi/ befindlich) zu stehen:

    Code
    #! /bin/sh
    echo hallo >> ausgabe.txt



    Wenn ich diese Datei über den Dateimanager öffne und auf "Ausführen" klicke, dann wird auch in die datei ausgabe.txt hallo reingeschrieben. Wenn ich jedoch auf "im Terminal öffnen" klicke passiert nichts. Genauso passiert auch wenn ich dieses Script als cron-job einstelle nichts. Hier der Text des cronjobs

    Code
    */2 * * * * /home/pi/print.sh


    Wenn ich die Datei wiederum über die Konsole mit "/home/pi/print.sh" aufrufe geht es wieder.


    Ich bin langsam am Verzweifeln! Muss ich noch irgendwie den crontab-job aktiveren? Was mache ich falsch?
    Entschuldigung, wenn ich irgendeinen Anfänger-Fehler drin hab - habe erst vor kurzem damit angefangen an meinem Pi rumzuwerkeln!


    Liebe Grüße
    loirad

  • SUPER! Vielen Dank - das war der Schlüssel!


    Mein aktueller Code in dem Script:


    Code
    #! /bin/sh
    /opt/vc/bin/vcgencmd measure_temp >> /home/pi/ausgabe.txt



    Ihr seit eine super Community!


    Liebe Grüße
    loirad

  • Hallo,


    bin noch ein Anfänger was Linux und den Pi angeht, aber komme mit dem Crontab noch nicht ganz zurecht.
    Also ich habe eine Datei down.sh in /usr/local/etc angelegt und wenn ich diese ausführe mit
    sudo /usr/local/etc/down.sh fährt der raspi auch herunter und wieder hoch :) Also alles korrekt :)


    Nur wenn ich in Crontab die Zeile


    Code
    44 *	* * *	root	/usr/local/etc/down.sh



    unten vor der Raute einfüge, wie hier zu sehen,


    wird dies leider nicht ausgeführt. Es gibt also leider keinen Neustart um xx:44. Crontab hat die Attribute 777, habe auch schon 755 und 711 ausprobiert.


    Kann mir irgendwer helfen ?


    Habe auch schon die Zeile
    44 * * * * root sudo reboot
    ausprobiert, aber dies funktioniert auch leider nicht.


    Vielen Dank schonmal :)

  • ich kann keinen fehler finden.


    Zur zeit wird dein script jeden tag zu jeder stunde punkt 44 min ausgeführt vom user root.


    Schau mal nach ob der User root überhaupt existiert.
    Wenn nicht leg ihn an und gib ihm root rechte dann müsste es klappten.
    es könnte aber auch sein das das script keine ausführbar rechte besitzt.


    Code
    sudo chmod 774 /usr/local/etc/down.sh
  • Habe mich mit pi eingeloggt und root mit sudo passwd root ein Passwort gegeben.
    Benutzer existiert also.
    Dann habe ich dem Script down.sh die Rechte 744 gegeben und den Raspberry neu gestartet, doch es passiert immer noch nichts...


    Habe die 44 abgeändert in */2 damit er alle 2 min neu startet um zu testen :)


    Irgendwie stehe ich total auf dem Schlauch ...
    Habe ganz normal Rasbian Wheezy installiert, Updates gezogen und wollte jetzt einfach mal mein erstes Skript schreiben...

  • Hallo Patrick19,


    Quote

    44 * * * * root /usr/local/etc/down.sh


    Das Verzeichnis "/usr/local/etc" ist eigentlich für Konfigurationsdateien gedacht und nicht für Skripte. Nur mal am Rande.


    Quote

    Dann habe ich dem Script down.sh die Rechte 744 gegeben und den Raspberry neu gestartet, doch es passiert immer noch nichts...


    Welchem Benutzer gehört das Skript? Wenn du das Skript mit dem Benutzer pi erstellt hast, dann hat dieser bei 744 die Rechte das Skript auszuführen aber nicht die anderen Benutzer.


    Gruß Georg

  • Vielen Dank für den Tipp :)


    Jetzt läuft es :) Musste allerdings erst Crontab löschen und dann neu hochladen damit es lief, weil der Ersteller wohl noch pi war, auch wenn ich es bearbeitet hatte mit dem Benutzer root.


    Dann kann der Spass mit dem kleinen ja los gehen :D

  • Hallo mal wieder :)
    Jetzt habe ich das gleiche Problem wieder, aber bekomme es nicht weg :(


    Derzeit sieht meine crontab Datei in /etc/ folgendermaßen aus:


    # /etc/crontab: system-wide crontab
    # Unlike any other crontab you don't have to run the `crontab'
    # command to install the new version when you edit this file
    # and files in /etc/cron.d. These files also have username fields,
    # that none of the other crontabs do.


    SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/etc


    # m h dom mon dow user command
    * * * * * root echo läuft >> /usr/local/Script/log.log
    #


    wenn ich einfach nur "echo läuft >> /usr/local/Script/log.log" über Putty als root ausführe, läuft das ganze ohne Probleme und die Datei wird erstellt, bzw. ein "laeuft" hinzugefügt.
    Aber leider wird dies nicht jede Minute automatisch gemacht.
    Besitzer/Gruppe der Datei Crontab sind root root und die Berechtigung ist auf 755 gesetzt.


    Kann mir irgendwer helfen ? Ich hatte aus meiner eigentlichen crontab Datei eine Zeile gelöscht und danach wurde der Rest nicht mehr ausgeführt. Eingeloggt bin ich immer als root über Putty oder auch Filezilla.


    Vielen Dank


    Patrick


  • Kann mir irgendwer helfen ?


    Ja. Ich hatte genau dasselbe Problem. Nach längerem Suchen habe ich folgende Seite gefunden wo es gut erklärt wird mit cron und raspxbmc. Das Problem ist, dass auf raspxbmc standardmässig cron nicht gestartet wird. Im Gegensatz dazu ist cron immer gestartet bei raspbian.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert? Kein Backup - kein Mitleid :no_sad: . Sieh Dir mal raspiBackup an ;)

    Edited once, last by framp ().

  • Ich finde den ersten post ehrlich gesagt ziemlich unübersichtlich, vorallem die Code Blöcke sind lieblos copy&pasted ohne darauf zu achten ob etwas vielleicht in die nächste Zeile müsste usw (man sieht das die einzelnen Punkte ursprünglich in eine neue Zeile standen)


    Zudem fehlt wie ich finde auch die Erklärung wieso/weshalb/warum - man merkt einfach sehr stark dass das Tutorial nicht vom Themen-Ersteller stammt vorallem wenn man seinen späteren post (das man prüfen solle ob der user "root" überhaupt existiert) zu dem Thema betrachtet und ein Linux System regelmässig neu zu starten ist wirklich eine Schande :( Also das Beispiel ist schlecht gewählt und eigentlich auch fehlerhaft (es fehlt der shebang)



    Deshalb würd ich gern einen neuen Thread machen der vernünftiger und übersichtlicher gestaltet und der dann vielleicht auch angepinnt wird?



    Habe mir die Mühe gemacht alles nochmals möglichst ausführlich hier zusammen zu tragen: http://www.forum-raspberrypi.d…utorial-crontab-cron-jobs

  • Hallo,


    ich bin seit ein paar Tagen auch Besitzer eines RPi (mit Cam) und möchte ihn als Wetterstation und Webcam Basis für unseren Modell-Flugplatz nutzen.
    Ich schwanke noch die Pi Cam zu verwenden oder gleich eine "richtige" Outdoor Webcam zu nehmen, die dann am RPi hängt (der dann Wetterdaten in das Bild einbindet).
    Dazu noch eine Frage wegen Cron.
    Ich möchte Bilder der Pi Cam alle 20 Minuten auf meinen (externen) Webserver übertragen (mit UMTS Stick - hab den K3520 hier noch liegen).
    Das sollte aber täglich nur in der Zeit von 6 bis 21 Uhr geschehen. Kann der Cron auch "Auszeiten" programmiert bekommen und wenn ja wie schaffe ich das? Die externe Webcam kann das ja.


    Gruß
    Onki

    Edited once, last by onki ().