Failed systemd service nach definierter Zeit neu starten

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
Dogge
Beiträge: 1895
Registriert: 13.09.2010 11:07:33
Lizenz eigener Beiträge: MIT Lizenz

Failed systemd service nach definierter Zeit neu starten

Beitrag von Dogge » 02.03.2019 10:03:37

Ich habe folgenden systemd service erstellt um einen bot nach failures (xmpp-server des bots down, xmpp-server des mucs down, kein Netz, etc.) neu starten zu lassen:

Code: Alles auswählen

[Unit]
Description=Go XMPP bot posting feeds to MUCs
After=network-online.target
StartLimitIntervalSec=1800
StartLimitBurst=5
Wants=network-online.target

[Service]
User=martin
Group=martin
Type=simple
ExecStart=/home/martin/go/bin/feed-to-muc
ExecStop=/bin/kill -9 $MAINPID
RestartSec=300
Restart=on-failure

[Install]
WantedBy=multi-user.target
Das funktioniert soweit auch ganz gut, der bot wird nach 5 Minuten neu gestartet und bei mehr als 5 Neustarts innerhalb 30 Minuten komplett gestoppt (der service läuft auf einem Pi, der über Nacht kein Netzwerk hat und der bot soll nicht unnötig die ganze Nacht alle 5 Minuten neu gestartet werden).

Nun hätte ich es gerne, dass der service nach Deaktivierung wegen "StartLimitIntervalSec=1800, StartLimitBurst=5" alle 2 Stunden wieder aktiviert wird. So wie es derzeit läuft muss der bot nach Deaktivierung manuell neu gestartet werden. Leider habe ich in der systemd Doku nichts gefunden was mir da weiter hilft. Kennt da jemand eine Möglichkeit?
Debian Testing + Gnome | Linux-Anfänger seit 04/2003
http://files.mdosch.de/2014-07/0xE13D657D.asc

Benutzeravatar
MSfree
Beiträge: 10759
Registriert: 25.09.2007 19:59:30

Re: Failed systemd service nach definierter Zeit neu starten

Beitrag von MSfree » 02.03.2019 10:55:04

Dogge hat geschrieben: ↑ zum Beitrag ↑
02.03.2019 10:03:37
(der service läuft auf einem Pi, der über Nacht kein Netzwerk hat und der bot soll nicht unnötig die ganze Nacht alle 5 Minuten neu gestartet werden).
Warum deaktivierst du den Dienst dann nicht einfach mit cron? Die Zeiten, in denen es kein Netz gibt, sollten doch täglich die gleichen sein. Du könntest also den Dienst per cron nachts deaktivieren und morgens wieder aktivieren.

Benutzeravatar
novalix
Beiträge: 1909
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: Failed systemd service nach definierter Zeit neu starten

Beitrag von novalix » 02.03.2019 11:00:06

Kenne mich nicht wirklich aus, aber suche doch mal nach systemd.timer.
"OnUnitInactiveSec" in der man-page hört sich oberflächlich nach einem Ansatzpunkt an.

Code: Alles auswählen

man systemd.timer
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

Benutzeravatar
Dogge
Beiträge: 1895
Registriert: 13.09.2010 11:07:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Failed systemd service nach definierter Zeit neu starten

Beitrag von Dogge » 02.03.2019 17:29:37

MSfree hat geschrieben: ↑ zum Beitrag ↑
02.03.2019 10:55:04
Dogge hat geschrieben: ↑ zum Beitrag ↑
02.03.2019 10:03:37
(der service läuft auf einem Pi, der über Nacht kein Netzwerk hat und der bot soll nicht unnötig die ganze Nacht alle 5 Minuten neu gestartet werden).
Warum deaktivierst du den Dienst dann nicht einfach mit cron? Die Zeiten, in denen es kein Netz gibt, sollten doch täglich die gleichen sein. Du könntest also den Dienst per cron nachts deaktivieren und morgens wieder aktivieren.
Etwas mit cron zu basteln wäre für mich die Alternative wenn es mit systemd nicht geht, ich fände es aber eleganter alles mit der einen Datei zu erschlagen.
novalix hat geschrieben: ↑ zum Beitrag ↑
02.03.2019 11:00:06
Kenne mich nicht wirklich aus, aber suche doch mal nach systemd.timer.
"OnUnitInactiveSec" in der man-page hört sich oberflächlich nach einem Ansatzpunkt an.

Code: Alles auswählen

man systemd.timer
Darüber bin ich noch nicht gestolpert. Danke, ich werde mir anschauen ob man das in einem service file nutzen kann. Bisher kenne ich systemd.timer nur als cron Ersatz.
Debian Testing + Gnome | Linux-Anfänger seit 04/2003
http://files.mdosch.de/2014-07/0xE13D657D.asc

Benutzeravatar
bluestar
Beiträge: 2346
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Failed systemd service nach definierter Zeit neu starten

Beitrag von bluestar » 02.03.2019 19:00:58

Prüfe mal mit welchem Fehlercode sich /home/martin/go/bin/feed-to-muc beendet, wenn das Netz nicht da ist...
Sollte der EXITCODE=0 sein, so musst du deinen Service anpassen:

Code: Alles auswählen

Restart=always

Antworten