Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern

Begonnen von DeeSPe, 22 November 2017, 01:03:15

Vorheriges Thema - Nächstes Thema

DeeSPe

Zitat von: mahowi am 23 November 2017, 16:21:44
/etc/init.d und /etc/systemd/system/ sind Verzeichnisse.

Aus dem ersten Post:

Die Pfade ermitteln mit:
which systemctl
Oder (initd):
which service

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DS_Starter

#16
Morgen Dan,

vielen Dank für das Modul ..... feine Sache.  8)

Ich habe auch einen Einsatz dafür und ein paar Anmerkungen/Wünsche, bleibt ja nicht aus  ;)

* Attribute genericDeviceType, homebridgeMapping
  Die Attribute werden bei der Def gesetzt, aber es steht nicht in der commandref erläutert was die machen und wozu man sie braucht

* Reading "error"
  In dem Reading steht ja immer der letzte Fehler. Er bleibt aber auch stehen wenn der letzte Funktionsausfruf i.O. war und keinen Fehlerverursachte.
  Ich würde dafür plädieren, error tatsächlich nur mit dem Fehler zu füllen wenn es ihn auch gab und sonst error zu löschen oder mit "none" o.ä. zu   
  setzen.

Dann nich ein Wunsch.
Schön wäre m.M. nach Attribute z.B. "autoStart = 1....10", "autoStop=1....5".
Was sollen die bewirken ?  Der definierte Dienst würde beim Start von FHEM mit einer Verögerung von 1 ....10 Sekunden gestartet, bzw. beim "shutdown" automatisch gestoppt (der Stop von FHEM entsprechend mit einer Verzögerung von 1 ... 5 Sek. verzögert).

Ich habe z.B: einen Linux-Watchdog (NICHT fhem-watchdog) den ich auf diesem Weg nur laufen haben möchte wenn fhem regulär gestartet wird bzw. FHEM abstürzt. Wird FHEM regulär gestoppt, wird watchdog mit beendet. Dadurch wird die Überwachung mit beendet, sonst muss man ihn von Hand stoppen.

LG
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

CoolTux

Zitat von: DS_Starter am 24 November 2017, 07:34:25
* Reading "error"
  In dem Reading steht ja immer der letzte Fehler. Er bleibt aber auch stehen wenn der letzte Funktionsausfruf i.O. war und keinen Fehlerverursachte.
  Ich würde dafür plädieren, error tatsächlich nur mit dem Fehler zu füllen wenn es ihn auch gab und sonst error zu löschen oder mit "none" o.ä. zu   
  setzen.

Hallo Heiko,

Kurz meine persönliche Meinung dazu. Ich finde das das Reading genau so stehen bleiben sollte. So kann man sehen das es mal einen Fehler gab und selber einschätzen wie schwerwiegend das nun für einen selber ist. Ob der Fehler aktuell ist oder nicht kann man ja am Timestamp fest machen. Bei Deinem Vorschlag würden alte Fehler überschrieben werden.




Grüße
Leon
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

mahowi

Zitat von: DS_Starter am 24 November 2017, 07:34:25
* Attribute genericDeviceType, homebridgeMapping
  Die Attribute werden bei der Def gesetzt, aber es steht nicht in der commandref erläütert was die machen und wozu sie man braucht

Die beiden Attribute kommen von Homebridge.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

DS_Starter

#19
Morgen Leon und mahowi,

ich hatte mich davon leiten lassen dass im Logfile ohnehin vermerkt ist dass es einen Fehler gab.
Im Reading würde ich selbst nur aktuell gültige error-Einträge bevorzugen. Das wäre mir persönlich lieber  :D

@mahowi , ja ich wollte Dan nur darauf hinweisen was mir aus Sicht eines Anwenders auffällt. Ich nutze homebridge nicht und finde plötzlich Attribute gesetzt die nicht erläutert sind und mit denen ich als Anwender nichts anfangen kann. Im code habe ich ja gesehen dass er ein grep auf die globalen attr macht und abhängig davon im Device hinzufügt. Aber der normale Anwender wundert sich, liest in commandref nach und findet nichts.


LG
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DeeSPe

Zitat von: DS_Starter am 24 November 2017, 07:34:25
* Attribute genericDeviceType, homebridgeMapping
  Die Attribute werden bei der Def gesetzt, aber es steht nicht in der commandref erläutert was die machen und wozu man sie braucht

Okay, hab's geändert. Die userattr werden nun überhaupt nicht mehr hinzugefügt. Es werden aber die Attribute homebridgeMapping und genericDeviceType gesetzt wenn das Attribut homebridgeMapping vorhanden ist. Ich gehe einfach mal davon aus dass diese auch benutzt werden könnten sofern diese vorhanden sind. Falls doch nicht benötigt, können die beiden Attribute einfach gelöscht werden, sie werden nicht wieder automatisch neu hinzugefügt.
commandref ist auch entsprechend ergänzt.

Zitat von: DS_Starter am 24 November 2017, 07:34:25
* Reading "error"
  In dem Reading steht ja immer der letzte Fehler. Er bleibt aber auch stehen wenn der letzte Funktionsausfruf i.O. war und keinen Fehlerverursachte.
  Ich würde dafür plädieren, error tatsächlich nur mit dem Fehler zu füllen wenn es ihn auch gab und sonst error zu löschen oder mit "none" o.ä. zu   
  setzen.

Obwohl ich eigentlich eher zu CoolTux' Meinung stehe, ärgere ich mich gerade bei der Entwicklung auch immer darüber dass die teilweise riesenlange Fehlermeldung stehen bleibt, obwohl längst alles richtig läuft.
Hab's jetzt mal angepasst und feuere ein "none" raus wenn alles okay ist. ;)

Zitat von: DS_Starter am 24 November 2017, 07:34:25
Dann nich ein Wunsch.
Schön wäre m.M. nach Attribute z.B. "autoStart = 1....10", "autoStop=1....5".
Was sollen die bewirken ?  Der definierte Dienst würde beim Start von FHEM mit einer Verögerung von 1 ....10 Sekunden gestartet, bzw. beim "shutdown" automatisch gestoppt (der Stop von FHEM entsprechend mit einer Verzögerung von 1 ... 5 Sek. verzögert).

Da stoße ich leider momentan an meine Grenzen! :o
Es werden bei shutdown/undef alle BlockingCalls gekillt, somit bliebe nur übrig das blockierend zu machen und das wäre unschön.
Autostart wäre machbar, macht aber m.E. wenig Sinn ohne Autostop.
Hast Du evtl. eine Idee Heiko?

Ich habe das Modul im ersten Beitrag mit den o.g. Änderungen aktualisiert.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DS_Starter

Danke Dan  :D

wegen dem autoStop muss ich mal schauen wie ich das im DbLog gelöst habe.
Dort wird beim Shutdown auch im asynchronen Mode der cachewrite in die DB aufgerufen damit der Cache beim Shutdown weggeschrieben wird. Das passiert auch mit BlockingCall.

Werde mal heute Abend oder am WE ein bisschen basteln und melde mich wieder ob ich was erreicht habe.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

MadMax-FHEM

#22
Hi Dan,

vielen Dank für das tolle Modul!!

Macht den Start u.a. von alexa-fhem deutlich charmanter! :)

EDIT: allerdings stimmt wohl etwas mit dem Status nicht so richtig... Ich nutze für alexa-fhem (noch) initd, also das Script unter /etc/init.d/     Bin dabei auf mein neues Testsystem umzusteigen und dabei hatte ich einen "Fehler" im Script (anlegen des Log: Pfad fehlt). Daher wurde mittels Start durch das Modul zwar gestartet und danach running angezeigt (auch nach Abfrage durch INFO) aber tatsächlich lief alexa-fhem nicht. Fehler im Startscript korrigiert und nun geht es und der Status stimmt auch...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

DeeSPe

Zitat von: MadMax-FHEM am 24 November 2017, 16:37:08
Hi Dan,

vielen Dank für das tolle Modul!!

Macht den Start u.a. von alexa-fhem deutlich charmanter! :)

EDIT: allerdings stimmt wohl etwas mit dem Status nicht so richtig... Ich nutze für alexa-fhem (noch) initd, also das Script unter /etc/init.d/     Bin dabei auf mein neues Testsystem umzusteigen und dabei hatte ich einen "Fehler" im Script (anlegen des Log: Pfad fehlt). Daher wurde mittels Start durch das Modul zwar gestartet und danach running angezeigt (auch nach Abfrage durch INFO) aber tatsächlich lief alexa-fhem nicht. Fehler im Startscript korrigiert und nun geht es und der Status stimmt auch...

Gruß, Joachim

Was hat denn in diesem Fehlerfall die Status Ausgabe aus der Konsole gezeigt?
sudo service alexa status
War darin zu sehen dass der Dienst nicht läuft?
Manchmal läuft ein Dienst zwar, schreibt dann aber in sein Logfile den eigentlichen Fehler und sieht für das System trotzdem so aus als wenn er läuft.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

MadMax-FHEM

#24
Zitat von: DeeSPe am 24 November 2017, 16:55:17
Was hat denn in diesem Fehlerfall die Status Ausgabe aus der Konsole gezeigt?
sudo service alexa status
War darin zu sehen dass der Dienst nicht läuft?
Manchmal läuft ein Dienst zwar, schreibt dann aber in sein Logfile den eigentlichen Fehler und sieht für das System trotzdem so aus als wenn er läuft.

Gruß
Dan

Hi Dan,

leider nein, also lief tatsächlich nicht:


sudo /etc/init.d/alexa status
Alexa is not running
script done


bzw. so wie du es sehen wolltest:


sudo service alexa status
● alexa.service - LSB: Start daemon at boot time for alexa
   Loaded: loaded (/etc/init.d/alexa; generated; vendor preset: enabled)
   Active: active (exited) since Fri 2017-11-24 16:58:34 CET; 7s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1181 ExecStop=/etc/init.d/alexa stop (code=exited, status=0/SUCCESS)
  Process: 1239 ExecStart=/etc/init.d/alexa start (code=exited, status=0/SUCCESS)

Nov 24 16:58:31 MadMax-PI-FHEM-Test2 systemd[1]: Starting LSB: Start daemon at boot time for alexa...
Nov 24 16:58:31 MadMax-PI-FHEM-Test2 su[1243]: Successful su for pi by root
Nov 24 16:58:31 MadMax-PI-FHEM-Test2 su[1243]: + ??? root:pi
Nov 24 16:58:31 MadMax-PI-FHEM-Test2 su[1243]: pam_unix(su:session): session opened for user pi by (uid=0)
Nov 24 16:58:32 MadMax-PI-FHEM-Test2 alexa[1239]: -su: /home/pi/alexa-fhem/log/alexa-2017-11.log: No such file or directory
Nov 24 16:58:32 MadMax-PI-FHEM-Test2 alexa[1239]: Alexa starting
Nov 24 16:58:34 MadMax-PI-FHEM-Test2 alexa[1239]: Alexa is not running
Nov 24 16:58:34 MadMax-PI-FHEM-Test2 alexa[1239]: script done
Nov 24 16:58:34 MadMax-PI-FHEM-Test2 alexa[1239]: script done
Nov 24 16:58:34 MadMax-PI-FHEM-Test2 systemd[1]: Started LSB: Start daemon at boot time for alexa.


Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

DeeSPe

Zitat von: MadMax-FHEM am 24 November 2017, 16:57:35
Hi Dan,

leider nein, also lief tatsächlich nicht:


sudo /etc/init.d/alexa status
Alexa is not running
script done


bzw. so wie du es sehen wolltest:


sudo service alexa status
● alexa.service - LSB: Start daemon at boot time for alexa
   Loaded: loaded (/etc/init.d/alexa; generated; vendor preset: enabled)
   Active: active (exited) since Fri 2017-11-24 16:58:34 CET; 7s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1181 ExecStop=/etc/init.d/alexa stop (code=exited, status=0/SUCCESS)
  Process: 1239 ExecStart=/etc/init.d/alexa start (code=exited, status=0/SUCCESS)

Nov 24 16:58:31 MadMax-PI-FHEM-Test2 systemd[1]: Starting LSB: Start daemon at boot time for alexa...
Nov 24 16:58:31 MadMax-PI-FHEM-Test2 su[1243]: Successful su for pi by root
Nov 24 16:58:31 MadMax-PI-FHEM-Test2 su[1243]: + ??? root:pi
Nov 24 16:58:31 MadMax-PI-FHEM-Test2 su[1243]: pam_unix(su:session): session opened for user pi by (uid=0)
Nov 24 16:58:32 MadMax-PI-FHEM-Test2 alexa[1239]: -su: /home/pi/alexa-fhem/log/alexa-2017-11.log: No such file or directory
Nov 24 16:58:32 MadMax-PI-FHEM-Test2 alexa[1239]: Alexa starting
Nov 24 16:58:34 MadMax-PI-FHEM-Test2 alexa[1239]: Alexa is not running
Nov 24 16:58:34 MadMax-PI-FHEM-Test2 alexa[1239]: script done
Nov 24 16:58:34 MadMax-PI-FHEM-Test2 alexa[1239]: script done
Nov 24 16:58:34 MadMax-PI-FHEM-Test2 systemd[1]: Started LSB: Start daemon at boot time for alexa.


Gruß, Joachim

Setz mal am serviced Gerät:
attr <name> serviceRegexFailed dead|failed|exited

Bin unsicher ob ich das als Default übernehmen sollte. ???

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

MadMax-FHEM

Hi Dan,

geht leider nicht:

dead|failed|exited not valid for serviceRegexFailed, must be a regex like 'dead|failed'!

Hab ein wenig rumprobiert aber irgendwie mag das Modul meine Eingaben nicht...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

DeeSPe

Zitat von: DeeSPe am 24 November 2017, 17:11:56
Setz mal am serviced Gerät:
attr <name> serviceRegexFailed dead|failed|exited

Bin unsicher ob ich das als Default übernehmen sollte. ???

Gruß
Dan

Zitat von: MadMax-FHEM am 24 November 2017, 17:22:07
Hi Dan,

geht leider nicht:

dead|failed|exited not valid for serviceRegexFailed, must be a regex like 'dead|failed'!

Hab ein wenig rumprobiert aber irgendwie mag das Modul meine Eingaben nicht...

Gruß, Joachim

Hab gerade gemerkt dass die Prüfung beim Setzen dieser Attribute nicht funktioniert.
Die Version im ersten Beitrag ist um den Fehler bereinigt und wie o.g. als Default übernommen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

MadMax-FHEM

Hi Dan,

unverändert, also Anzeige "running" (auch nach INFO) obwohl der Dienst nicht läuft.

Bekomme folgendes im Log:

PERL WARNING: Use of uninitialized value $re in concatenation (.) or string at ./FHEM/98_serviced.pm line 241.

Sicherheitshalber habe ich das Attribut gesetzt wie genannt (klappt jetzt) aber genauso...

Sorry, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

DeeSPe

Zitat von: MadMax-FHEM am 24 November 2017, 17:37:41
Hi Dan,

unverändert, also Anzeige "running" (auch nach INFO) obwohl der Dienst nicht läuft.

Bekomme folgendes im Log:

PERL WARNING: Use of uninitialized value $re in concatenation (.) or string at ./FHEM/98_serviced.pm line 241.

Sicherheitshalber habe ich das Attribut gesetzt wie genannt (klappt jetzt) aber genauso...

Sorry, Joachim

Alles gut, bin ja froh wenn jemand Schwachstellen aufdeckt.
Hab jetzt mal die Reihenfolge etwas für mich sinnvoller verändert, nun sollte es klappen.
Das Modul im ersten Beitrag ist aktualisiert.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe