Autostart & restart eines binaries

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
swa00
Beiträge: 9
Registriert: 15.04.2016 08:07:57

Autostart & restart eines binaries

Beitrag von swa00 » 15.04.2016 08:15:11

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

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Autostart & restart eines binaries

Beitrag von smutbert » 15.04.2016 08:33:45

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

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
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)

Code: Alles auswählen

# systemctl daemon-reload
# systemctl start mpdlcd
# systemctl enable mpdlcd

swa00
Beiträge: 9
Registriert: 15.04.2016 08:07:57

Re: Autostart & restart eines binaries

Beitrag von swa00 » 15.04.2016 08:39:13

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) :-)

swa00
Beiträge: 9
Registriert: 15.04.2016 08:07:57

Re: Autostart & restart eines binaries

Beitrag von swa00 » 15.04.2016 14:45:08

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

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Autostart & restart eines binaries

Beitrag von smutbert » 15.04.2016 16:20:40

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)

swa00
Beiträge: 9
Registriert: 15.04.2016 08:07:57

Re: Autostart & restart eines binaries

Beitrag von swa00 » 15.04.2016 19:21:45

-bash: systemctl: command not found


das meinte ich - in welchem paket sollte es vorhanden sein ?

TomL

Re: Autostart & restart eines binaries

Beitrag von TomL » 15.04.2016 19:34:26

swa00 hat geschrieben:-bash: systemctl: command not found
das meinte ich - in welchem paket sollte es vorhanden sein ?
Kein Paket, systemd ist das Default-Startsystem von Raspian:

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
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.
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.

j.m.2.c.

swa00
Beiträge: 9
Registriert: 15.04.2016 08:07:57

Re: Autostart & restart eines binaries

Beitrag von swa00 » 15.04.2016 20:48:17

Lieber Thomas, lieber Bert,

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 ~ $
dort liegt wohl der Hund begraben und nu ?? :-)


Stefan

TomL

Re: Autostart & restart eines binaries

Beitrag von TomL » 15.04.2016 21:08:45

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.

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Autostart & restart eines binaries

Beitrag von smutbert » 15.04.2016 21:15:39

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 Debianmonit 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

swa00
Beiträge: 9
Registriert: 15.04.2016 08:07:57

Re: Autostart & restart eines binaries

Beitrag von swa00 » 15.04.2016 21:16:25

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

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Autostart & restart eines binaries

Beitrag von smutbert » 15.04.2016 21:35:06

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«.

swa00
Beiträge: 9
Registriert: 15.04.2016 08:07:57

Re: Autostart & restart eines binaries

Beitrag von swa00 » 15.04.2016 21:39:19

ich bin mir fast sicher , dass ich die habe - oder doch nicht ? ..
ich mach die mal eben drauf,

melde mich danke

swa00
Beiträge: 9
Registriert: 15.04.2016 08:07:57

Re: Autostart & restart eines binaries

Beitrag von swa00 » 15.04.2016 22:02:38

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

swa00
Beiträge: 9
Registriert: 15.04.2016 08:07:57

Re: Autostart & restart eines binaries

Beitrag von swa00 » 15.04.2016 22:29:55

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

Antworten