Hauptmenü

fhem.pid rechte ?

Begonnen von Edi77, 03 November 2024, 15:47:09

Vorheriges Thema - Nächstes Thema

Edi77

Hallo,

Beim Status des fhem.service ist mir aufgefallen das es mit der fhem.pid wohl ein Problem gibt.
Die Datei hat die Berechtigung
"-rw-r--r--  1 fhem dialout   5 Nov  3 15:42 fhem.pid"
das ist ja wohl richtig oder?


:/run# systemctl status fhem.service
● fhem.service - FHEM Home Automation
     Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-11-03 15:42:31 CET; 25s ago
    Process: 4491 ExecStartPre=/bin/mkdir -p /var/run/fhem (code=exited, status=0/SUCCESS)
    Process: 4493 ExecStartPre=/bin/chown -R fhem:dialout /var/run/fhem (code=exited, status=0/SUCCESS)
    Process: 4506 ExecStart=/usr/bin/perl fhem.pl fhem.cfg (code=exited, status=0/SUCCESS)
   Main PID: 4512 (perl)
     Status: "started"
      Tasks: 4 (limit: 9425)
     Memory: 285.9M
     CGroup: /system.slice/fhem.service
             ├─4512 /usr/bin/perl fhem.pl fhem.cfg
             ├─4622 /usr/bin/perl fhem.pl fhem.cfg
             ├─4624 /usr/bin/perl fhem.pl fhem.cfg
             └─4625 /usr/bin/perl fhem.pl fhem.cfg

Nov 03 15:41:59 ubuntu-FHEM systemd[1]: Starting FHEM Home Automation...
Nov 03 15:42:00 ubuntu-FHEM systemd[1]: fhem.service: Can't open PID file /run/fhem/fhem.pid (yet?) after start: Operation not permitted
Nov 03 15:42:31 ubuntu-FHEM systemd[1]: Started FHEM Home Automation.

Master FHEM 6 als VM auf ESX Ubuntu 20.04 LTS mit MAXCube/MAX!/FS20|TabletUI|Flightradar|Tasmota|TTN Lora|CCU3 HomematicIP|RPi mit GammaScout|MQTT EasyESP 8266|LuftdatenInfo|deCONZ HUEDev|probemon|Siemens Logo|P4D|3D PRINTER RAISE3D

passibe

#1
Vermutlich bezieht sich
Zitat von: Edi77 am 03 November 2024, 15:47:09-rw-r--r--  1 fhem dialout   5 Nov  3 15:42 fhem.pid
auf /run/fhem/fhem.pid?

Deine systemd-Servicedatei passt die Rechte aber für /var/run/fhem an, also mit /var davor ... FHEM nimmt scheinbar nur /run/fhem ...

Vielleicht einfach die Servicedatei entsprechend anpassen.

Aber wieso nutzt du überhaupt ExecStartPre? Das ist jedenfalls in der standard-Servicedatei nicht enthalten: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/init-scripts/fhem.service

Edi77

#2
Hallo,

Der FHEM läuft schon fast 8j vielleicht ist es nicht mehr drin .....
Scheint aber zu passen
Der FHEM läuft auch etwas zäh, fhem.cfg hat nach dem aufräumen nur noch 13600 zeilen

[Unit]
Description=FHEM Home Automation
Requires=network.target
#After=network.target
After=dhcpcd.service

[Service]
Type=forking
NotifyAccess=all
User=fhem
Group=dialout
# Run ExecStartPre with root-permissions
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir -p /var/run/fhem
ExecStartPre=/bin/chown -R fhem:dialout /var/run/fhem
# Run ExecStart with defined user and group
WorkingDirectory=/opt/fhem
ExecStart=/usr/bin/perl fhem.pl fhem.cfg
#ExecStart=/usr/bin/perl fhem.pl configDB
TimeoutStartSec=240
TimeoutStopSec=120
#ExecStop=/usr/bin/pkill -U fhem perl
ExecStop=/usr/bin/pkill -f -U fhem "fhem.pl fhem.cfg"
# Restart options: no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, or always.
Restart=on-failure
RestartSec=3
WatchdogSec=180
PIDFile=/var/run/fhem/fhem.pid

[Install]
WantedBy=multi-user.target
Master FHEM 6 als VM auf ESX Ubuntu 20.04 LTS mit MAXCube/MAX!/FS20|TabletUI|Flightradar|Tasmota|TTN Lora|CCU3 HomematicIP|RPi mit GammaScout|MQTT EasyESP 8266|LuftdatenInfo|deCONZ HUEDev|probemon|Siemens Logo|P4D|3D PRINTER RAISE3D

passibe

Was passiert denn, wenn du die service-Datei einfach mal aktualisierst?

Hier ist sie entsprechend angepasst (damit After=dhcpcd.service stimmt):

[Unit]
Description=FHEM Home Automation
Wants=network.target
#After=network.target
After=dhcpcd.service

# In case of suspicious reconnect problems after reboot
# you can try to replace the above lines for
# network target by the below lines with
# network-online.target
#
# network-online.target will only work if
# "modern" network management tools (e.g. NetworkManager)
# are used.
#
# Wants=network-online.target
# After=network-online.target

#Requires=postgresql.service
#After=postgresql.service
#Requires=mysql.service
#After=mysql.service

[Service]
Type=forking
User=fhem
Group=dialout
WorkingDirectory=/opt/fhem
ExecStart=/usr/bin/perl fhem.pl fhem.cfg
#ExecStart=/usr/bin/perl fhem.pl configDB
Restart=always

[Install]
WantedBy=multi-user.target

Vor ersetzen der Datei fhem stoppen:
sudo service fhem stopDann die Datei ersetzen und dann
sudo systemctl daemon-reload && sudo service fhem startausführen.

Verschwindet dann die Fehlermeldung?

Falls irgendetwas nicht funktioniert, erst wieder stoppen, dann die alte Datei einfügen, dann daemon-reload, dann starten ...