Sheduler setzt zeitweise aus

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Klappt irgendwie nicht.
    Nach dieser Anleitung habe ich es aufgesetzt.

    Quellcode

    1. 1.
    2. Script einfügen in rpineustart.sh mit
    3. sudo nano rpineustart.sh
    4. #!/bin/bash
    5. service=shcd
    6. echo "script gestartet"
    7. if (( $(ps -ef | grep -v grep | grep app=shc | wc -l) < 3 ))
    8. then
    9. /etc/init.d/$service stop
    10. sleep 2m
    11. /etc/init.d/$service start
    12. else
    13. echo "$sudo reboot!!!"
    14. fi
    15. Dann speichern.
    16. 2.
    17. rpineustart.sh kopieren
    18. sudo cp rpineustart.sh /sbin
    19. 3.
    20. Dann noch die Zeilen mit sudo crontab -e in die crontab einfügen.
    21. * /8 * * * /sbin/rpineustart.sh ----> würde die Überprüfung, also das Script ausführen 8 Minuten nach jeder vollen Stunde.
    22. AUSFÜHRBAR machen
    23. sudo chmod +x rpineustart.sh
    24. 4.
    25. sudo reboot
    26. 5.
    27. Testen ob es geht
    28. 1. Den Sheduler anhalten
    29. 2. Script mit sudo rpineustart.sh manuel aufrufen. Wenn dann ein reboot erfolgt, geht es.
    Alles anzeigen
  • Startet denn das Script , bei manuellen Aufruf?

    Kommt in der Konsole die Ausgabe script gestartet?

    Hier habe ich mich etwas unkorrekt ausgedrückt:

    Das Script oben führt keinen reboot aus, sondern soll den Service neu starten.
    SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
  • Mir kommen die Zeilen 10 bis 16 etwas komisch vor.

    Generell funktioniert das so:

    #!/bin/bash>>>>>>>>>>>>>>>shebag ok

    count=99 >>>>>>>>>>>>>>>>>variable count bekommt den Wert 99

    if [ $count -eq 100 ]>>>>>>>>> wenn variable count 100 ist, dann führe die Zeile nach then aus

    then

    echo "Count is 100">>>>>>>>>>also drucke Count is 100

    else>>>>>>>>>>>>>wenn nicht 100, dann führe nächste Zeile aus

    echo "Count is not 100">>>>>>>>>>>>drucke Count is not 100

    fi>>>>>>>>>>>>>>>>>>>>>Programm, oder Script ende

    In deinem Script oben, verstehe ich Zeile 10 mit if nicht. Es sollte hier getestet werden, ob der sheduler läuft.Dann geht es aber weiter mit then Service stop. Also wenn er läuft, soll er gestoppt und nach 2 min gestartet werden, was für mich keinen Sinn macht.Läuft er nicht, geht er mit else weiter und startet den Service neu.Da muss noch mal jemand drüber schauen, der genau erkennt, was die Zeile 10 if genau macht. Wenn dort geprüft wird, ob er nicht läuft, wäre 11 bis 14 ok. Dann verstehe ich aber Zeile 16 nicht.
    SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von rmjspa ()

  • premo schrieb:

    Es erscheint immer noch
    "sudo: rpineustart.sh: command not found"
    Dann fehlt der Pfad. Gehe mal in das Verzeichnis /sbin
    cd /sbin
    und dann sudo rpineustart.sh

    Eigentlich müsste er Scripts, die in /usr/bin oder /sbin automatisch finden.

    Da Scripte, die später mittels crontab aufgerufen werden m.W. immer als root ausgeführt werden, könntest Du das script auch unter /usr/bin ablegen. Da habe ich meine Scripte liegen.

    Nachtrag: Mein Beispiel oben kann man jetzt wohl kaum noch lesen. Es war formatiert, aber irgendwie ist die Formatierung verloren gegangen.
    SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
  • Bin mit Neusetzen der Ausführbarkeit
    "sudo chmod a+x rpineustart.sh"
    weiter gekommen.
    Es wird zwar nicht der Rpi neugestartet,
    nur der Shedular wird gestartet.
    rpineustart.JPG

    Es muss sicherlich der Eintrag im Skript geändert werden.
    /etc/init.d/$service stop
    sleep 2m
    /etc/init.d/$service start

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von premo ()

  • Versuche mal nach der Zeile "then"

    /sbin/reboot

    und den Rest, bis auf die Zeile "fi" löschen.

    Also:

    then
    /sbin/reboot
    fi

    Das Script darf dann aber nicht per cronjob @reboot gestartet werden. Sonst könntest Du dich selbst aussperren. Ebenso würde ich mindestens 10 Minuten als Intervalzeit für den Aufruf des Scripts wählen.

    Es könnte passieren, das der Sheduler gar nicht mehr startet und dann würde, wenn das Script läuft, sofort ein reboot ausgeführt werden und man könnte nicht mehr eingreifen.

    Auch wäre ein Fehler in der "if" Zeile fatal, er würde dann bei jedem Aufruf des Scripts ein erbot machen.
    SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
  • Hallo
    Das Skript müsste dann so aussehen.

    Shell-Script

    1. #!/bin/bash
    2. service=shcd
    3. echo "script gestartet"
    4. if (( $(ps -ef | grep -v grep | grep app=shc | wc -l) < 3 ))
    5. then
    6. /sbin/reboot
    7. fi
    Der cronjob ist bei mir dieser
    * /8 * * * /sbin/rpineustart.sh
    Könnte der so bleiben ?
  • Ja, das sollte so richtig sein. Der cronjob wird nach dem reboot alle 8 Min. gestartet.

    Ich würde jetzt folgendermaßen zum testen vorgehen.

    Zwei Terminalfenster öffnen.

    In dem einen startest Du Dein Script.
    Somit läuft es einmal durch und wenn der Sheduler läuft, sollte nichts weiter passieren.
    Dann hält Du mit dem zweiten Terminalfenster den Sheduler an, und startest in dem 1. Fenster dein Script. Wenn alles geht, sollte jetzt ein reboot erfolgen.

    Wenn das alles funktioniert, dann würde ich erst den cronjob erstellen.
    SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.
  • rmjspa schrieb:

    Zwei Terminalfenster öffnen.

    In dem einen startest Du Dein Script.
    Somit läuft es einmal durch und wenn der Sheduler läuft, sollte nichts weiter passieren.
    Dann hält Du mit dem zweiten Terminalfenster den Sheduler an, und startest in dem 1. Fenster dein Script. Wenn alles geht, sollte jetzt ein reboot erfolgen.
    Hallo

    Habe es so mal getestet.
    Ein Reboot erfolgt nicht, es wird nur der Sheduler gestartet.

    Mit dem Befehl "sudo /sbin/rpineustart.sh" und laufenden Sh
    sieht es so aus.
    rpineustart 2.JPG

    Und mit gestoppten Sh so
    rpineustart 3.JPG