Pi, oder Homebridge Dienst, automatisch einmal am Tag neu starten | crontab -e

  • Erst mal Danke für diese gute Anleitung.


    Wenn ich jeden Montag um 3 uhr einen Neustart möchte, müsste es doch so aussehen:

    00 3 * * 1 sudo reboot


    Noch eine etwas andere Frage, möchte ich einen anderen Befehl anstossen, z.B. für ein Backup, müsste ich nur eine neue Zeile darunter einfügen mit dem enstprechenden Befehl anstatt reboot?

  • Genau: sowas wie hier

    # m h dom mon dow command

    0 4 * * * /usr/local/bin/telegram_reboot.sh

    @reboot sleep 240 && /usr/local/bin/telegram_system_start.sh

  • habe seit neuestem Probleme mit dem Neustart der Homebridge per Crontab, nach dem Neustart ist die Homebridge nicht erreichbar. Es wird aber kein Fehler in der Log angezeigt, sobald ich den restart wiederhole, läuft es direkt einwandfrei.


    Kann es mir nicht erklären ... :/

  • habe seit neuestem Probleme mit dem Neustart der Homebridge per Crontab, nach dem Neustart ist die Homebridge nicht erreichbar. Es wird aber kein Fehler in der Log angezeigt, sobald ich den restart wiederhole, läuft es direkt einwandfrei.


    Kann es mir nicht erklären ... :/

    Wir auch nicht. Was genau steht denn in der crontab?


    Stefan

  • Vielleicht ist ja der RPi-eigene Hardware-"watchdog" was für euch.


    Ich setzte ihn schon einige Zeit ein und wenn das System steht (kommt halt immer mal vor),

    dann startet der RPi nach spät. 60 Sek. (oder wann man will -> läßt sich definieren) automatisch neu.

    Vorteil ist hierbei, dass dies schon direkt in der Hardware des Raspberry berücksichtigt ist.

  • Hey Nastra,


    kurze Korrektur zu deinen Befehlen.


    Mit sudo su - wechselst du zu root. Da brauchst du dann kein sudo mehr vor crontab -e, da sudo als root den Befehl trotzdem wieder als root ausführt.

    Auch in der Crontab brauchst du das sudo vor dem reboot nicht, da die Crontab ja root gehört und von diesem ausgeführt wird.


    Alternativ könnte man den Crontab-Eintrag für "pi" machen, dann braucht man das sudo vor dem reboot, dafür braucht man es an keiner anderen Stelle mehr.


    Soll also der Reboot von root ausgeführt werden (was sinnvoll ist) wäre der erste Command

    sudo crontab -e

    und der Eintrag 0 3 * * * reboot


    Soll der Reboot von pi ausgeführt werden

    crontab -e

    und der Eintrag 0 3 * * * sudo reboot


    Ist nicht wichtig, spart aber ein bisschen tippen ;) Wir Informatiker sind bekanntlich faul :D


    Übrigens - zur Kontrolle, ob der Eintrag passt, kann man (sudo) crontab -l eingeben.

    Und mit -u kann man sich den Crontab von einem anderen User ansehen. Ist in unserem Fall aber eher hinfällig, da man für root eh sudo-Rechte braucht und dann kein "-u root" mehr braucht, weil mit dem sudo der Befehl eh als Root ausgeführt wird :D

  • Hallo zusammen,


    danke für diese Anleitung. Den Eintrag, einmal um 4 Uhr morgens bei mir eu zu starten habe ich auch mal gemacht. Kleine Linux-Anfängerfragen habe ich dennoch:

    - Angenommen, ich möchte nur jeden zweiten Tag resetten....: 0 4 * * * sudo reboot -> Kommt beim letzen Sertn dann 1,3,5,7 (also Kommas) oder brauche ich jedesmal eine neue Zeile für den jew, Tag?

    - Auch (blöde) Anfängerfrage: Einfach so ein reboot ohne Homebridge vorher zu beenden (Ich habe nach der guten Anleitung von sschuste installiert, also glaube ich Homebridge als Dienst...?)? Oder kann man sich dabei etwas "zerschießen"?


    VG vsa

  • Einfach so ein reboot ohne Homebridge vorher zu beenden

    Das ist eine gute Frage.


    Das Schöne am Reboot ist, dass homebridge automatisch beendet wird. Beim Herunterfahren wird nämlich still und heimlich ein systemctl stop homebridge ausgeführt. Soll heißen: du musst dich um nix kümmern.


    Das gleiche passiert auch bei einem poweroff. Dieses Kommando fährt den Raspi herunter und schaltet ihn aus (sofern das bei einem Raspi überhaupt geht). Und es passiert auch bei einem shutdown. Hier wird der Rechner heruntergefahren und startet nicht mehr neu wie bei einem Reboot.


    Stefan

  • - Angenommen, ich möchte nur jeden zweiten Tag resetten....: 0 4 * * * sudo reboot -> Kommt beim letzen Sertn dann 1,3,5,7 (also Kommas) oder brauche ich jedesmal eine neue Zeile für den jew, Tag?

    Kann man so machen, aber das wäre nicht wirklich jeder zweite Tag, sondern Montag, Mittwoch, Freitag und Sonntag. Du willst vielleicht lieber

    Code
    0 4 */2 * * /sbin/reboot

    Ich würde in cronjobs übrigens immer den vollen Pfad zum Kommando angeben, hier also /sbin/reboot. Um einen Pfad herauszubekommen, benutzt man einfach den Befehl which:


    which reboot


    Stefan

  • Vielleicht ist ja der RPi-eigene Hardware-"watchdog" was für euch.


    Ich setzte ihn schon einige Zeit ein und wenn das System steht (kommt halt immer mal vor),

    dann startet der RPi nach spät. 60 Sek. (oder wann man will -> läßt sich definieren) automatisch neu.

    Vorteil ist hierbei, dass dies schon direkt in der Hardware des Raspberry berücksichtigt ist.

    z-smoker: Kann man da auch speziell einstellen, dass er nur einen Neustart machen soll, wenn die Homebridge stehen geblieben ist?

  • rel


    Nur für Überwachung der Homebridge direkt nicht, nur wenn Betriebssystem steht.

    Aber lese dir die kurze Anleitung mal durch. Da ist alles beschrieben und hilft dir weiter.


    https://www.gieseke-buch.de/ra…g-zur-ueberwachung-nutzen

  • Kann man da auch speziell einstellen, dass er nur einen Neustart machen soll, wenn die Homebridge stehen geblieben ist?

    Mit dem Watchdog geht das nicht. Man müsste also selber etwas basteln, was einerseits ganz einfach, andererseits aber nicht ganz trivial ist.


    Wenn man seine Homebridge mit dem systemd kontrolliert (was man daran erkennt, dass der Befehl systemctl verwendet wird), dann wird die Homebridge immer dann automatisch neu gestartet, wenn sie abgestürzt ist. Das ist schon mal ziemlich praktisch. Sie wird aber nicht automatisch neu gestartet, wenn sie absichtlich angehalten wurde.


    Absturz und Anhalten sind zwei grundverschiedene Dinge. Absturz ist das, was man nicht will, während Anhalten meist ein manueller Prozess ist, der mit dem Befehl sudo systemctl stop homebridge ausgelöst wird. Was beide gemein haben ist die Tatsache, dass danach die Homebridge nicht mehr läuft. Und während nach dem Crash die Homebridge neugestartet wird (das will man so), wird sie nicht neugestartet, wenn man sie vorsätzlich angehalten hat (das will man auch so).


    Leider kommt es vor, dass die Homebridge von einem Plugin angehalten wird. Das Plugin fährt aus irgendwelchen Gründen an die Wand und kann nicht weiter ausgeführt werden, aber die Homebridge schmiert dabei nicht ab, sondern wird von dem Plugin angehalten. Das wird erzeugt durch gute Programmierung und ein gutes sogenanntes error handling. Das Plugin homebridge-zp zur Steuerung von Sonos-Geräten macht das beispielsweise so, weil es sich im Fehlerfalle unbedingt noch von der Sonos-Anlage abmelden will. Wenn es das nicht täte, würde nach einer Weile keine neue Anmeldung mehr möglich sein. Es gibt sicherlich auch andere Plugins, die sich ähnlich verhalten. Nur ist genau das richtig blöd für uns .


    Da die Homebridge vom Plugin angehalten wurde, wird sie vom systemd nicht neu gestartet. Der hat nämlich ein Signal bekommen, dass alles so seine Richtigkeit hat und die Homebridge nicht laufen soll. Das ist natürlich ziemlich uncool, wenn man sich gerade weit entfernt von seinem Setup befindet, beispielsweise in Timbuktu oder in Hammerfest, und man keine Möglichkeit hat, das Ding wieder zu starten.


    Da könnte jetzt ein kleines Skript helfen, das prüft ob die Homebridge läuft und das korrigierend eingreift, falls das nicht der Fall sein sollte. Diese Skript könne den Zustand beispielsweise einmal pro Minute abfragen und dann irgendwas tun (Neustart des Raspi oder Neustart der Homebridge). Was unweigerlich dazu führt, dass man seine Homebridge selber nicht mehr anhalten kann. Ein manuell eingegebenes sudo systemctl stop homebridge würde immer dazu führen, dass kurz darauf der Raspi neu gestartet wird. Und wenn dann die Homebridge aus irgendwelchen Gründen tatsächlich nicht startet, die Schüssel in einen wunderschönen Boot-Loop verfällt, der einem den ganzen Monat versauen kann, vor allem dann, wenn der vierwöchige Urlaub in Hammerfest gerade begonnen hat.


    Selbst wenn man nur die Homebridge neu starten will und nicht gleich den ganzen Raspi, kann einen ein Neustart der Homebridge nerven. Du hältst die Homebridge absichtlich an, dein Rechner startet sie neu. Lästig.


    Wie dem auch sei, ein Aufpasser-Skript könnte so aussehen:


    sudo nano /usr/local/bin/homebridge-watcher.sh

    Bash
    #!/bin/bash
    
    /usr/bin/curl http://localhost:51826
    if [ $? != 0 ]; then
        sudo systemctl restart homebridge
    fi

    chmod +x sudo nano /usr/local/bin/homebridge-watcher.sh


    Dann einen cron job erstellen, der das Skript alle 5 Minuten aufruft:

    sudo nano /etc/crontab


    und unter die letzte Zeile einfügen:

    Code
    */5 * * * * root /usr/local/bin/homebridge-watcher.sh >/dev/null 2>&1


    Testen mit:

    sudo systemctl stop homebridge und warten. Das Skript wird alle fünf Minuten aufgerufen, also beispielsweise 11:00 Uhr, dann um 11:05 Uhr, dann um 11:10 Uhr und so weiter und so fort. Wenn man den cron job allerdings erst um 11:04 Uhr installiert, läuft das Skript zum ersten Mal um 11:10 Uhr. Abwarten.


    Stefan

  • sschuste  rel Mein reporter tool deckt das überwachen des Journal ab und kann auf bestimmte Fehler reagieren. Außerdem benachrichtigt dich es per Telegram sobald ein Fehler auftaucht immer wieder in einem selbst definierten Abstand bis der Fehler behoben wurde.


    Vorteil Gegenüber der Lösung von sschuste ist zusätzlich noch das es durchgängig überwacht da es als service läuft und nicht nur alle x min durch einen cronjob aufgerufen wird also Live Überwachung und Reaktion auf den Fehler ;)


    Homebridge-Tools zum System, Update und Instanzen überwachen mit Telegram


    lg

  • Kurze Frage:

    Ich habe Schalter für meine Automationen erstellt. Speziell jeweils einen für Wochentage, einen für Samstag und einen für Sonntag.


    Ich möchte nun Freitags um 03:30 einen Reboot des PI einstellen.
    Ist nach dem Reboot der Schalter (für Wochentage) noch an? Oder muss ich den per extra Automation nach dem Reboot wieder aktivieren?

    Gruß

    Maddin