Autostart & restart eines binaries
Autostart & restart eines binaries
Guten Morgen liebe Gemeinde,
meine Linux Kenntnisse sind eher rudimentär, weshalb ich von euch einen Tipp benötige :
ich habe einen kleinen C++ daemon geschrieben , der von Zeit zu Zeit einen Abflug macht (alle paar wochen)
ich möchte gerne ein Script oder ähnliches verwenden , dass automatisch erkennt , dass dieses binary nicht mehr läuft und es deshalb neu startet.
Das Abfrage-intervall sollte möglichst im bereich um die 5 sek liegen , da der daemon recht schnell wieder auf die Beine soll.
Die Googlewelt schlägt mehrere "Möglichkeiten" vor und ich bin deshalb mit meinem Latein am ende,
was denn nun die Beste Technik ist.
Vielleicht ist jemand von euch Cracks so lieb und könnte mir eine mini Anleitung schicken, die ich mal
umsetzen könnte (Beispiel wäre cool)
Liebe Grüsse
Stefan
meine Linux Kenntnisse sind eher rudimentär, weshalb ich von euch einen Tipp benötige :
ich habe einen kleinen C++ daemon geschrieben , der von Zeit zu Zeit einen Abflug macht (alle paar wochen)
ich möchte gerne ein Script oder ähnliches verwenden , dass automatisch erkennt , dass dieses binary nicht mehr läuft und es deshalb neu startet.
Das Abfrage-intervall sollte möglichst im bereich um die 5 sek liegen , da der daemon recht schnell wieder auf die Beine soll.
Die Googlewelt schlägt mehrere "Möglichkeiten" vor und ich bin deshalb mit meinem Latein am ende,
was denn nun die Beste Technik ist.
Vielleicht ist jemand von euch Cracks so lieb und könnte mir eine mini Anleitung schicken, die ich mal
umsetzen könnte (Beispiel wäre cool)
Liebe Grüsse
Stefan
Re: Autostart & restart eines binaries
Willkommen im Debianforum,
seit systemd also seit jessie (Debian 8) sollte sich das sehr leicht mit einer service.unit machen lassen. Ich hab zB eine »/etc/systemd/system/mpdlcd.service« geschrieben, mit folgendem Inhalt
Die Zeile "After=..." kannst du dir ersparen, wenn dein daemon nicht erst nach einigen anderen bestimmten gestartet werden soll und der Rest, bis auf Dateiname, Pfad und Name ("Description=..." und "ExecStart=..."), die du anpassen müssen wirst, sollte recht gut passen.
Hast du die Datei geschrieben, musst du nur die Datei von system einlesen lassen, den service aktivieren und ihn schließlich auch gleich starten (oder einen Neustart machen, bei dem er von jetzt an automatisch gestartet wird)
seit systemd also seit jessie (Debian 8) sollte sich das sehr leicht mit einer service.unit machen lassen. Ich hab zB eine »/etc/systemd/system/mpdlcd.service« geschrieben, mit folgendem Inhalt
Code: Alles auswählen
[Unit]
Description=mpdlcd
After=mpd.service LCDd.service
[Service]
Type=simple
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/mpdlcd /etc/mpdlcd.conf
RestartSec=5
Restart=always
[Install]
WantedBy=multi-user.target
Hast du die Datei geschrieben, musst du nur die Datei von system einlesen lassen, den service aktivieren und ihn schließlich auch gleich starten (oder einen Neustart machen, bei dem er von jetzt an automatisch gestartet wird)
Code: Alles auswählen
# systemctl daemon-reload
# systemctl start mpdlcd
# systemctl enable mpdlcd
Re: Autostart & restart eines binaries
Guten Morgen smutbert,
hui , das ging ja schnell und auch noch ausführlich ..
Natürlich werde ich das mal gleich ausprobieren - diese Variante ist mir beim Suchen im netzt noch gar nicht
untergekommen ..
Erst mal lieben Dank für Deine Mühe
Ich melde Erfolg ( oder auch nicht)
hui , das ging ja schnell und auch noch ausführlich ..
Natürlich werde ich das mal gleich ausprobieren - diese Variante ist mir beim Suchen im netzt noch gar nicht
untergekommen ..
Erst mal lieben Dank für Deine Mühe
Ich melde Erfolg ( oder auch nicht)
Re: Autostart & restart eines binaries
ich hätte noch eine nachfrage
ich arbeite mit dem Raspbian (Pi2/3) Jessie light
Welche alternative gäbe es zu systemctl resp systemd .. denn beide sind nicht zu bekommen
lg
Stefan
ich arbeite mit dem Raspbian (Pi2/3) Jessie light
Welche alternative gäbe es zu systemctl resp systemd .. denn beide sind nicht zu bekommen
lg
Stefan
Re: Autostart & restart eines binaries
Was meinst du?
(systemd ist integraler Bestandteil von raspbian jessie egal ob light oder nicht. Du müsstest schon einen nicht unerheblichen Aufwand treiben um systemd durch etwas anderes zu ersetzen)
(systemd ist integraler Bestandteil von raspbian jessie egal ob light oder nicht. Du müsstest schon einen nicht unerheblichen Aufwand treiben um systemd durch etwas anderes zu ersetzen)
Re: Autostart & restart eines binaries
-bash: systemctl: command not found
das meinte ich - in welchem paket sollte es vorhanden sein ?
das meinte ich - in welchem paket sollte es vorhanden sein ?
Re: Autostart & restart eines binaries
Kein Paket, systemd ist das Default-Startsystem von Raspian:swa00 hat geschrieben:-bash: systemctl: command not found
das meinte ich - in welchem paket sollte es vorhanden sein ?
Code: Alles auswählen
$ cat /etc/issue
Raspbian GNU/Linux 8 \n \l
$ cat /etc/debian_version
8.0
$ cat /proc/1/comm
systemd
$ which systemctl
/bin/systemctl
Da gibts imho 2 Möglichkeiten.... erstens, "von außen" (z.B. mit einem Script) prüfen, ob der Prozess noch existiert. Diese Variante hat allerdings die Schwäche, dass sie nicht erkennen kann, ob der Prozess auch wirklich noch lebt. Und die zweite Idee wäre, von Deinem Daemon in einem bestimmten Zyklus einen eindeutig identifizierbaren Alive-Timestamp (z.B. nach /tmp) zu schreiben. Der Zyklus ist abhängig von Deiner Toleranz, wie lange ein Ausfall maximal bestehen darf. Wenn das wirklich nur alle paar Wochen mal passiert und man den Restart systemd überlassen möchte, müsste man allerdings vorher überprüfen und sicherstellen, dass Systemd nicht nur normale oder unnormale Exits mitbekommt, hauptsache Exit... sondern ob es auch ein schlichtes Sterben ohne Exit bemerkt. Ich würde in einem solchem Fall vom Daemon stündlich diesen Timestamp schreiben und alle 2 oder 4 oder 6 Stunden oder einmal täglich via CronJob prüfen, ob der letzte Eintrag wirklich nicht älter als eben max. 1 Stunde ist. Wie gesagt, wie häufig das geprüft werden soll ist von der Vorgabe abhängig, wie lange maximal ein Ausfall bestehen darf.swa00 hat geschrieben:der von Zeit zu Zeit einen Abflug macht (alle paar wochen)
ich möchte gerne ein Script oder ähnliches verwenden , dass automatisch erkennt , dass dieses binary nicht mehr läuft und es deshalb neu startet.
j.m.2.c.
Re: Autostart & restart eines binaries
Lieber Thomas, lieber Bert,
erst mal lieben Dank , dass Ihr die Geduld mit mir aufbringt
dort liegt wohl der Hund begraben und nu ??
Stefan
erst mal lieben Dank , dass Ihr die Geduld mit mir aufbringt
Code: Alles auswählen
pi@raspberrypi ~ $ cat /etc/issue
Raspbian GNU/Linux 7 \n \l
pi@raspberrypi ~ $ cat /etc/debian_version
7.9
pi@raspberrypi ~ $ cat /proc/1/comm
init
pi@raspberrypi ~ $ which systemctl
pi@raspberrypi ~ $
Stefan
Re: Autostart & restart eines binaries
Dann ist die Lösung mit systemd nicht möglich. Der Alive-Timestamp und die Prüfung über einen Cron-Job ist jedoch vom Init-System losgelöst. Ansonsten... ein aktuelles Image installieren.... und wenns ein User-und GUI-loser Raspi-Server werden soll, dann via NetInstall.
Re: Autostart & restart eines binaries
Raspbian 7 ist nicht jessie sondern Wheezy und Wheezy kommt tatsächlich ohne systemd daher (man könnte es zwar nachinstallieren, aber unter Wheezy würde ich das nicht empfehlen).
Wenn du also nicht auf die aktuelle Version upgraden willst (was aber wohl kaum ein Nachteil wäre), dann muss eine andere Lösung her. Allein von der Paketbeschreibung fällt mir monit ein, aber wirklich kennen tue ich es nicht. Ein Beispiel habe ich hier gefunden
https://www.uibk.ac.at/zid/systeme/linux/monit.html
der Link führt aber bei mir ins nirvana, daher
http://web.archive.org/web/201008032039 ... monit.html
Wenn du also nicht auf die aktuelle Version upgraden willst (was aber wohl kaum ein Nachteil wäre), dann muss eine andere Lösung her. Allein von der Paketbeschreibung fällt mir monit ein, aber wirklich kennen tue ich es nicht. Ein Beispiel habe ich hier gefunden
https://www.uibk.ac.at/zid/systeme/linux/monit.html
der Link führt aber bei mir ins nirvana, daher
http://web.archive.org/web/201008032039 ... monit.html
Re: Autostart & restart eines binaries
edit :
ok, gibt es irgend eine verfügbare 8.0 version für den Rasp 2 / 3 ??
weis das jemand ?? ich finde nur die originalen auf raspbian.org
ok, gibt es irgend eine verfügbare 8.0 version für den Rasp 2 / 3 ??
weis das jemand ?? ich finde nur die originalen auf raspbian.org
Re: Autostart & restart eines binaries
Die aktuelle Version ist 8. Habe sie mir gerade vor nicht allzulanger Zeit hier heruntergeladen.
https://www.raspberrypi.org/downloads/raspbian/
Die aktuelle Datei heißt wohl »2016-03-18-raspbian-jessie-lite.zip«.
https://www.raspberrypi.org/downloads/raspbian/
Die aktuelle Datei heißt wohl »2016-03-18-raspbian-jessie-lite.zip«.
Re: Autostart & restart eines binaries
ich bin mir fast sicher , dass ich die habe - oder doch nicht ? ..
ich mach die mal eben drauf,
melde mich danke
ich mach die mal eben drauf,
melde mich danke
Re: Autostart & restart eines binaries
Zwischenmeldung :
Bert , du hattest recht , jetzt ist Vers 8 drauf.
Ich richte jetzt das Ding ein und komme dann wieder später zu deinem Eingangspost zurück ...
Rückmeldung folgt
Bert , du hattest recht , jetzt ist Vers 8 drauf.
Ich richte jetzt das Ding ein und komme dann wieder später zu deinem Eingangspost zurück ...
Rückmeldung folgt
Re: Autostart & restart eines binaries
JAAAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHH :_)
Lieber Thomas : danke an Dich !!
Lieber BERT :
DU BIST GÖTTLICH - DU HAST EINEN DAU GLÜCKLICH GEMACHT
VIELEN LIEBEN DANK !!!!!!!!
Das Wochenende ist gerettet
Lieber Thomas : danke an Dich !!
Lieber BERT :
DU BIST GÖTTLICH - DU HAST EINEN DAU GLÜCKLICH GEMACHT
VIELEN LIEBEN DANK !!!!!!!!
Das Wochenende ist gerettet