Das ist, wie Du schon erkannt hast, ein Bekämpfen der Symptome, nicht der Ursachen. Es gibt erschreckend Viele, die Probleme dauerhaft so lösen, es sollte aber klar sein, dass dieser Ansatz falsch ist..
Die einfachste Variante ist ein cron job, und zwar im Betriebssystem.
Zunächst solltest Du aber prüfen, ob nicht ein Neustart des Dienstes ausreichend ist. Wenn Du Spaß am Forschen hast, könntest Du auch noch checken, ob nicht gar ein Neustart nur des zugehörigen Bundles ausreicht.
Jeder dieser Wege ist mehr oder weniger einfach mittels cron zu erledigen.
Obacht! cron im Betriebssystem hat große Ähnlichkeit mit Quartz cron, welches in openHAB verwendet wird. Die beiden sind aber nicht gleich, sondern nur ähnlich. Der wichtigste Unterschied: Quartz cron unterstützt sekundengenaue Jobs, während das "normale" cron nur minutengenau funktioniert.
Einen Eintrag in der passenden Datei nimmt man mit dem Befehl crontab -e vor. Jeder User hat seine eigene crontab, entsprechend muss man hier crontab -e mit sudo aufrufen, um die crontab von root zu bearbeiten. Also
sudo crontab -e ausführen.
In der sich öffnenden Textdatei kannst Du nun einen Zeitpunkt sowie den zugehörigen Befehl eintragen:
Für Neustart des kompletten Systems:
1/2 bedeutet (da an dritter Stelle): jeden zweiten Tag, beginnend mit dem ersten Tag des Monats. Im Zweifel hast Du beim Monatswechsel an zwei Tagen hintereinander einen Neustart, in allen Monaten mit ungerader Anzahl Tage.
1 an erster Stelle: Minute 1 der Stunde
2 an zweiter Stelle: Stunde 2 des Tages.
Also alle zwei Tage um 02:01:00 Uhr.
/sbin/reboot ist schließlich der Befehl, der ausgeführt wird.
Für Neustart des openHAB Services:
Code: Alles auswählen
1 2 1/2 * * /usr/bin/systemctl restart openhab.service
Für den Neustart nur des Bundles muss man in die Karaf Konsole wechseln. Der einfachste Weg dorthin führt über ssh mit einem private key. Leider musst Du den zuerst erstellen und im System hinterlegen. Deshalb möchte ich empfehlen, falls Du diesen Weg beschreiten möchtest, zunächst manuell zu testen, ob ein Neustart des Bundles ausreicht.
Dazu loggst Du Dich im Fehlerfall über ssh im System ein, anschließend führt Du den Befehl
aus. Nach Eingabe von
habopen (das ist das Passwort für die Karaf Konsole, falls Du es nicht geändert hast) landest Du in der Karaf Konsole.
Dort führst Du den Befehl
aus.
Wenn es danach wieder ganz normal funktioniert, lohnt es sich, das per crontab zu erledigen. Weil man (auf gewöhnlichem Weg) ssh kein Passwort mitgeben kann (aus gutem Grund!), ist der Weg hier etwas beschwerlicher, weil wir zunächst ein Private/Public Key Pärchen erzeugen müssen. Anschließend müssen wir noch dafür sorgen, dass openHAB den öffentlichen Schlüssel kennt, so dass ein beliebiger User sich dann mit dem passenden Private Key identifizieren kann. (Der Key wird einem Userkonto zugeordnet - dieses wird mit dem Anlegen des Keys in Karaf etabliert), es muss also nicht zwingend den Usernamen openhab verwenden)
Es ist auch grundsätzlich praktisch, einen entsprechenden Key zu hinterlegen, weil man sich dann bequem und sicher von beliebigen Rechnern aus auf die Karaf Konsole verbinden kann. Allerdings sollte man dann tunlichst entweder den lokalen Zugriff nur über Passwort komplett lahm legen oder das Passwort absurd komplex gestalten, so dass es nicht per Brute Force Angriff geknackt werden kann. Solange Du den Weg nicht gehen willst, lasse ich die entsprechenden Erklärungen hier mal weg, der Post ist eh schon wieder viel zu lang geworden...
Jede der Neustart-Aktionen ist natürlich auch von openHAB aus steuerbar, crontab ist aber die schlanke und einfache Variante.