Simple Frage zu Cronjobs

  • Hallo,


    kann mir mal jemand was ganz grundsätzliches zu Cronjobs erklären?


    Wie das mit dem Cronjob funktioniert und wie man einen erzeugt bzw. erstellt habe ich begriffen und auch schon gemacht.

    Nun aber habe ich zwei Aufgaben und da verstehe ich nicht muss ich alles, also beide Aufgaben in eine Datei schreiben oder mache ich für jede Aufgabe eine Date und einen Cronjob der beide Dateien aufruft ? Ganz einfache Frage die mich hier an den berühmten Rand bringt. Googlen hilft irgendwie nicht, da ich ja weiß wie man einen Cronjpb erstellt.


    Kann mir das bitte mal einer oder auch zwei erklären??;(:conf::conf:


    DANKE!:)

  • Um es auf Dauer übersichtlich zu halten, würde ich immer "one job, one script" empfehlen. Funktional ist es aber egal.

    Packe alles was zusammengehört zusammen und trenne alles andere thematisch, so lassen sich Änderungen etc. meist einfacher erledigen.

    jm2c

    "There seems to be no sign of intelligent life anywhere..."

    And btw, i don't care if you use arch or whatever.

  • Hallo,


    Quote

    Nun aber habe ich zwei Aufgaben

    Gehören die Aufgaben denn Zusammen und müssen sequentiell ablaufen oder sind die Aufgaben völlig unabhängig voneinander?

    Bei letzterem sehe ich das auch so wie llutz: one job, one script.


    Gruß, noisefloor

  • Ok.

    Aber wie oder mit was erstelle ich dann die jeweiligen jobs?

    Ich gebe in meinen Pi "nano crontab -e" ein. Und dann schreibe ich dann da rein.

    So wie es jetzt verstehe soll ich in die crontab -e Datei die jeweiligen Dateien eintragen das diese dann ausgeführt werden.

    Aber mit was, Python oder Bash oder wie???

  • Also die eine Aufgabe ist das einschalten von Licht per Funk. Abends ein, Morgens aus.

    Die zweite Aufgabe ist jetzt die Weihnachtsbeleuchtung ein und ausschalten.

  • Hallo,

    Quote

    Aber mit was, Python oder Bash oder wie???

    Hm? Hängt natürlich davon ab, in welcher Sprache dein Skript geschrieben ist.

    Grundsätzlich: Cron macht nichts anderes, als einen Befehl auszuführen, den du auch im Terminal ausführen könntest. Halt nur zu einem vorgegebenen Zeitpunkt und ggf. periodisch. Nicht mehr und nicht weniger.
    Noch ein Tipp, weil beliebter Fehler: bei den Befehlen absolute Pfade benutzen, sowohl für das Skript als auch für den Interpreter (wie z.B. Python), den man ggf. braucht.


    Statt Cronjobs könntest du übrigens auch systemd Timer Units benutzen :-)


    Gruß, noisefloor

  • Quote

    Ich gebe in meinen Pi "nano crontab -e"

    Nein,

    crontab -e

    Oder wenn der cronjob root-Rechte benötigt

    sudo crontab -e

    "There seems to be no sign of intelligent life anywhere..."

    And btw, i don't care if you use arch or whatever.

  • OK.

    In Python habe ich mich jetzt ein wenig eingelesen. Dann mache ich die Aufgaben mit Python und rufe das dann im Cronjob auf.

    Alles Klar.

    Vielen Dank Leute!!!

  • Der eigentliche Platz für Dein(e) Script(e) ist in /etc/cron.d/

    Dort kannst Du deinen eigenes Script unterbringen:

    z.B.:

    Code
    sudo vi /etc/cron.d/UV.cron
    
    */5 *   * * *   root    /usr/bin/python /usr/local/bin/UV.py 2>&1

    Das startet bei mir alle 5 Minuten ein Script zur UV-Messung.

    Dann brauchst Du deine /etc/crontab nicht anzutasten, Du brauchst nicht einmal cron neu starten.

    Wenn Du tail -f /var/log/syslog ins Terminal eingibst, siehst Du, das kurz vor dem Start des Eintrags

    cron die neuen und geänderten Jobs neu einliest.

    Wie Du die Jobs startest ist abhängig davon was Dein(e) Scripts machen,

    sind sie kurz und schmerzlos, dann 1 Job, 1 Script.

    Sind sie arbeitsintensiv, dann starte besser ein Script, das die Jobs nacheinander aufgeruft.

    Ich habe hier so einen Fall, in dem werden alle 5 min. 29 Scripts nacheinander aufgerufen, dauert fast 2 min. bis die durch sind.

    Stell Dir mal vor, die rufst Du gleichzeitig auf.


    MfG


    Jürgen

  • Hallo jeypi,

    Ok.

    Aber wie oder mit was erstelle ich dann die jeweiligen jobs?

    Ich gebe in meinen Pi "nano crontab -e" ein. Und dann schreibe ich dann da rein.

    So wie es jetzt verstehe soll ich in die crontab -e Datei die jeweiligen Dateien eintragen das diese dann ausgeführt werden.

    Aber mit was, Python oder Bash oder wie???


    Du kannst auch Icon nehmen oder jede andere Skriptsprache, die einen Quellcode interpretiert.


    Du kannst statt Skriptsprachen auch sog. Compilersprachen nehmen, die erzeugen dann direkt ausführbare Programme.


    Es geht also alles.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Quote

    Der eigentliche Platz für Dein(e) Script(e) ist in /etc/cron.d/


    NEIN


    Die Skripte/Programme, die von der Crontab ausgeführt werden, gehören in ein Verzeichnis, in das die Crontab des ausführenden Benutzers die benötigten Rechte hat.


    Auf keinen Fall nach /etc/cron.d


    Die Crontab wird auch für jeden Benutzer einzeln, mit "crontab -e", als User, ausgeführt.

    User-Crontab-Einträge in die System-Crontab zu packen ist nur eines: FALSCH


    In der Systemcrontab stehen nur Jobs, die regelmäßig zur Pflege des Systems ausgeführt werden.

    Selber denken,
    wie kann man nur?

  • Wie Du die Jobs startest ist abhängig davon was Dein(e) Scripts machen,

    sind sie kurz und schmerzlos, dann 1 Job, 1 Script.

    Sind sie arbeitsintensiv, dann starte besser ein Script, das die Jobs nacheinander aufgeruft.

    Ich habe hier so einen Fall, in dem werden alle 5 min. 29 Scripts nacheinander aufgerufen, dauert fast 2 min. bis die durch sind.

    Stell Dir mal vor, die rufst Du gleichzeitig auf.

    Hm, stell ich mir gerade vor:

    Was soll passieren?

    Solange die Scripte sich nicht in die Quere kommen (konkurrierender Zugriff auf Ressourcen, welche dafür nicht ausgelegt sind wie z.B. GPIOs) laufen die Jobs mehr oder weniger parallel... I/O behindert sich etwas (Filesystemzugriffe), aber sonst?

  • Okay, ich dachte, die Weihnachtsbeleuchtung ist systemrelevant.

    Die Jobs zur Pflege des Systems stehen bei mir in cron.hourly, cron.daily, cron.weekly und cron.monthly,

    seit ich die Systeme Raspian und MINT aufgespielt habe.


    Das Verzeichnis /etc/cron.d/ war bis auf einen Platzhalter leer.


    MfG


    Jürgen

  • jeypi Funk bedeudet 433MHz? Wenn Licht und Weihnachtsbeleuchtung per Funk zur selben Zeit geschaltet werden sollen, dann in einem Script mit einem Sleep von einer oder zwei Sekunden zwischen den Aufrufen. Der Grund dafür ist, dass die Befehle in einem Script nacheinander abgearbeitet werden und das Sleep ist eine Art Sicherung zwischen beiden Befehlen, damit sich die "Sendungen" nicht gegenseitig behindern. Siehe das Zitat von Zentris.

    Solange die Scripte sich nicht in die Quere kommen...

    aber zeige uns doch bitte mal den Inhalt der Scripte bzw. die Anweisungen zum Schalten, dann könnten sich hier auch diverse Grundsatzdiskussionen klären.



    Rasp-Berlin

    Auf keinen Fall nach /etc/cron.d

    Kann man machen, dann sollte man aber schon einen triftigen Grund haben.... oder ein Apache sein.;)


    User-Crontab-Einträge in die System-Crontab zu packen ist nur eines: FALSCH

    Naja, manchmal geht es nicht anders. Bei mir z.B. wollte die Crontab von root nicht, die Systemweite hatte es dann aber "gefressen".



    Andreas Es wird Weihnachten... die Missionare sind unterwegs... :stumm:

  • Quote

    Hm, stell ich mir gerade vor:
    Was soll passieren?

    Solange die Scripte sich nicht in die Quere kommen (konkurrierender Zugriff auf Ressourcen, welche dafür nicht ausgelegt sind wie z.B. GPIOs) laufen die Jobs mehr oder weniger parallel... I/O behindert sich etwas (Filesystemzugriffe), aber sonst?

    Zuwenig Speicher -> auslagern in den Swap, der Rechner reagiert dann sehr sehr träge bis hin zur Unbenutzbarkeit.


    MfG


    Jürgen