Programm als Dienst unter Linux

Programm als Dienst unter Linux

Beitragvon Timm Thaler » 3. Aug 2018, 12:13 Programm als Dienst unter Linux

Ich habe für meine "Homeautomation" einige Programme auf dem Raspi laufen: Die Heizung wird per Uart monitort und die Daten abgelegt, Ereignisse wie Klingel, Telefon... werden abgelegt, ein Telegram-Bot erlaubt die Abfrage der Daten von unterwegs (ich bin öfter mal paar Tage auswärts), sollen noch einige dazukommen.

Bisher werden diese Programme mit cron beim Neustart per @reboot etwas zeitverzögert gestartet und laufen dann permanent durch. Was soweit auch gut funktioniert. Allerdings habe ich das Problem, dass ich bei Änderungen an diesen Programmen diese per Kill beenden muss und dann entweder händisch starten - wobei sie dann in der Bash laufen und man diese nicht schließen darf - oder ein Reboot durchführen muss.

Das sollte doch besser gehen, wenn ich die Programme als Dienst einrichte, dann kann ich die anhalten, neustarten und überwachen, oder?

Nur wie erstelle ich einen Dienst mit Lazarus? Der Dienst muss ja zumindest auf Systemmeldungen wie Stop, Neustart... reagieren. Gibt es da Beispiele, wie sowas aussehen muss?
Timm Thaler
 
Beiträge: 733
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon mse » 3. Aug 2018, 13:06 Re: Programm als Dienst unter Linux

Üblicherweise verwendet man dazu auf Linux systemd
https://www.freedesktop.org/software/sy ... temd.html#
und systemctl
https://www.freedesktop.org/software/sy ... emctl.html
Dein Programm muss in den entsprechenden scripts eingetragen sein und auf verschiedene Signale reagieren können.
Allerdings habe ich das Problem, dass ich bei Änderungen an diesen Programmen diese per Kill beenden muss und dann entweder händisch starten - wobei sie dann in der Bash laufen und man diese nicht schließen darf - oder ein Reboot durchführen muss.

Starte dein Programm mit
Code: Alles auswählen
 
nohup DEINPROGRAMM &
 

Danach kann das Terminal geschlossen werden ohne den Prozess zu beenden.
https://linux.die.net/man/1/nohup
mse
 
Beiträge: 2013
Registriert: 16. Okt 2008, 09:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon Timm Thaler » 3. Aug 2018, 13:28 Re: Programm als Dienst unter Linux

Nun gibt es ja unter Lazarus die Möglichkeit, ein Projekt als Daemon zu erstellen. Dann bekommt man zwei Templates: daemonmapperunit und daemonuint.

Nur, was fange ich damit jetzt an? Gibts dazu Programmbeispiele? In den fpc examples habe ich nichts gefunden - aber vielleicht auch falsch gesucht?
Timm Thaler
 
Beiträge: 733
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Mathias » 3. Aug 2018, 17:21 Re: Programm als Dienst unter Linux

Vielleicht hilft dir dies weiter: http://wiki.freepascal.org/UniqueInstance/de
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon creed steiger » 3. Aug 2018, 20:13 Re: Programm als Dienst unter Linux

da steht auch wo das example ist

http://wiki.freepascal.org/Daemons_and_Services
creed steiger
 
Beiträge: 943
Registriert: 11. Sep 2006, 21:56

Beitragvon Warf » 3. Aug 2018, 20:39 Re: Programm als Dienst unter Linux



Das würde ich dir auch empfehlen, scheint das einfachste zu sein. Ansonsten für Linux (eventuell auch OSX) kannst hier schauen, sollte sich mit der Unix und BaseUnix Unit problemlos übersetzen lassen.

Bei solchen low level Unix Sachen lohnt es sich immer mal nach C Code zu suchen, den kann man meist ganz einfach übernehmen
Warf
 
Beiträge: 991
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

• Themenende •

Zurück zu Linux



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried