Crontab - Mehrere Befehle gleichzeitig

  • Ein weihnachtliches Hallo in die Runde,


    ich habe ein Problem mit dem crontab, um die Funksteckdosen zu steuern.


    Beispielhaft diese 3 Befehle:

    30 11 * * * /home/pi/raspberry-remote/send 11110 1 1

    30 11 * * * /home/pi/raspberry-remote/send 11110 2 1

    30 11 * * * /home/pi/raspberry-remote/send 11000 4 1


    Manuell funktioniert das einwandfrei, auch wenn ich per crontab nur einen Befehl ausführe, aber wenn ich diese 3 drin habe, dann klappt es nicht.


    Habt Ihr einen Tipp, wie ich die 3 Befehle trotzdem gleichzeitig ausführen kann?


    Vielen Dank und Grüße....

  • Quote

    Mh.... da finde ich aber nichts??!!

    Ich schon, genau diesen Thread hier: :auslachen:

    Crontab - Mehrere Befehle gleichzeitig


    Aber zur Sache, es könnte funktionieren, wenn man die Befehle aneinander reiht (alles ungetestet):

    Code
    1. 30 11 * * * /home/pi/raspberry-remote/send 11110 1 1 && /home/pi/raspberry-remote/send 11110 2 1 && /home/pi/raspberry-remote/send 11000 4 1

    dll-live

    Quote

    Warum packst du die 3 Befehle nicht in eine Datei und lässt nachher idese Datei im Cronjob ausführen?

    Eben.

    Man startet mit crontab eine .sh in der die Befehle stehen:

    crontab

    Code
    1. 30 11 * * * /bin/bash /home/pi/dingsbums.sh

    dingsbums.sh erstellen und bearbeiten:

    Code
    1. touch /home/pi/dingsbums.sh
    2. nano /home/pi/dingsbums.sh

    Folgendes einfügen und speichern:

    Code
    1. /home/pi/raspberry-remote/send 11110 1 1
    2. /home/pi/raspberry-remote/send 11110 2 1
    3. /home/pi/raspberry-remote/send 11000 4 1
  • Manuell funktioniert das einwandfrei, auch wenn ich per crontab nur einen Befehl ausführe, aber wenn ich diese 3 drin habe, dann klappt es nicht.


    Habt Ihr einen Tipp, wie ich die 3 Befehle trotzdem gleichzeitig ausführen kann?

    Die Frage ist, warum funktioniert es in Cron nicht. Dass Du sie manuell gleichzeitig ausführen kannst, bezweifle ich, es sei denn Du hast 3 Sender ...


    Also gleichzeitig geht schon mal nicht, ich glaube daran hängt sich auch die Ausführung via Cron auf, der erste schnappt sich die Hardware und der Rest ist einfach zeitlich zu nah dran...


    Wenn es wirklich per cron sein soll, versuch mal das:

    Code
    1. 30 11 * * * /home/pi/raspberry-remote/send 11110 1 1
    2. 30 11 * * * sleep 5 && /home/pi/raspberry-remote/send 11110 2 1
    3. 30 11 * * * sleep 10 && /home/pi/raspberry-remote/send 11000 4 1

    Ansonsten auch mein Vorschlag, ein Script per Cron aufrufen und da drin alles abhandeln.


    Knut

  • Quote

    30 11 * * * /home/pi/raspberry-remote/send 11110 1 1

    30 11 * * * /home/pi/raspberry-remote/send 11110 2 1

    30 11 * * * /home/pi/raspberry-remote/send 11000 4 1

    Meine cron-Einträge sehen meistens so aus:

    Code
    1. */5 * * * * root /usr/bin/python /usr/local/bin/Funksteckdose.py

    Fehlt da vielleicht der User, der das ausführen darf/muss?

    Dieses Beispiel funktioniert übrigens und wird hier beschrieben, so gegen Ende des Artikels.


    MfG


    Jürgen

    Jahrelang wurde gesagt: Das geht nicht, das gibt es nicht und das war schon immer so.
    Und dann kam einer, der wusste das nicht, und hat es dann einfach gemacht.

    Meine Projekte

    Avatar


  • Fehlt da vielleicht der User, der das ausführen darf/muss?

    Die User-Angabe ist nur in /etc/cron.d/* und /etc/crontab notwendig/wichtig. Bei crontabs, die per "crontab -e" erstellt werden, entfällt die User-Angabe.

    "Wenn du nichts zu sagen hast, sag einfach nichts!"

  • https://wiki.ubuntuusers.de/Cron/

    Scrollen bis: Häufige Fehler

    Wir kennen leider Dein Script nicht, und auch nicht, welche Ausführungsrechte es hat.


    llutz : Wo er das eingetragen, hat er leider nicht geschrieben, daher kam ich auf diese Idee.


    MfG


    Jürgen

    Jahrelang wurde gesagt: Das geht nicht, das gibt es nicht und das war schon immer so.
    Und dann kam einer, der wusste das nicht, und hat es dann einfach gemacht.

    Meine Projekte

    Avatar


  • Code
    1. 30 11 * * * /home/pi/raspberry-remote/send 11110 1 1
    2. 30 11 * * * sleep 5 && /home/pi/raspberry-remote/send 11110 2 1
    3. 30 11 * * * sleep 10 && /home/pi/raspberry-remote/send 11000 4 1

    Hallo In die Runde, vielen Dank für Eure Hinweise, sleep hat sehr gut geholfen.


    Vielen Dank und Grüße

  • Sali Moritz.


    Das ist wohl die unschönste Lösung von allen - doch wenns hilft und di damit zu frieden bist. Es ist gelöst...

    In diesem Fall sei doch bitte so nett und markier das Thema noch als erledigt.


    Gruss Dani

  • Guten Morgen,


    ja, das habe ich tatsächlich getan. Trotzdem müssen die 3 Befehle ja nacheinander ablaufen, da kam ich ohne sleep nicht aus. Wenn Du eine andere bessere Idee hat würde ich diese gerne hören.


    Ich könnte ja auch alle Lichterketten über einen Code laufen lassen, dann hätte ich das Problem nicht. Ist aber irgendwie unpraktisch, falls man mal bestimmte Bereiche an- oder abschalten will.


    Viele Grüße
    Moritz

  • Guten Morgen Moritz.


    Meine Lösung habei ch dir in meinem ersten Beeitrag zu diesem Thema #4 skizziert,


    Fred0815 hat im Beitrag #5 dann das ganze expliziet aufgeschrieben.

    (Habe nur die relevanten Infos rausgeschnitten und hier nochmals zitiert)

    Man startet mit crontab eine .sh in der die Befehle stehen:

    crontab

    Code
    1. 30 11 * * * /bin/bash /home/pi/dingsbums.sh

    dingsbums.sh erstellen und bearbeiten:

    Code
    1. touch /home/pi/dingsbums.sh
    2. nano /home/pi/dingsbums.sh

    Folgendes einfügen und speichern:

    Code
    1. /home/pi/raspberry-remote/send 11110 1 1
    2. /home/pi/raspberry-remote/send 11110 2 1
    3. /home/pi/raspberry-remote/send 11000 4 1


    Ich hoffe mit diesen Infos kommst du zurecht.

    Falls widererwarten noch Fragen auftauchen einfach melden.


    Gruss Dani

  • Selbst da könnte man ein sleep einbauen, oder die Befehle aneinanderreihen:

    Code
    1. /home/pi/raspberry-remote/send 11110 1 1
    2. sleep 5
    3. /home/pi/raspberry-remote/send 11110 2 1
    4. sleep 5
    5. /home/pi/raspberry-remote/send 11000 4 1

    bzw.

    Code
    1. /home/pi/raspberry-remote/send 11110 1 1 && /home/pi/raspberry-remote/send 11110 2 1 && /home/pi/raspberry-remote/send 11000 4 1

    bzw.

    Code
    1. /home/pi/raspberry-remote/send 11110 1 1 && sleep 5 && /home/pi/raspberry-remote/send 11110 2 1 && sleep 5 && /home/pi/raspberry-remote/send 11000 4 1
  • Was KKoPi geschrieben hat, würde ich auch vermuten. Also das der Empfänger mit drei Nachrichten schnell hintereinander nicht klar kommt und mehr Zeit für die Verarbeitung braucht. Hat send nicht ein Flag wie "Confirm" oder "DontWait", was evtl. helfen könnte. Unter "man send" wird sowas zumindestens erwähnt. Sleep ist ja eine unschöne Lösung. Besser wäre senden, warten/auswerten der Rückgabe und Fehlerbehandlung.

  • Das die Befehle ganz normal der Reihe nach erfolgreich abgearbeitet werden, davon gehe ich einfach mal aus. Das Problem könnte oder ist, das der Empfänger damit nicht klar kommt. Zumindestens die Vermutung.