Benutzer:Benheim/Startscript systemd
Startscript für FHEM
Für Linux-Versionen, die als Startsystem systemd
einsetzen, kann folgende Unit (systemd-Bezeichnung für Startscripts) verwendet werden:
[Unit] Description=FHEM service After=network.target Wants=hmland.service [Service] Type=forking User=fhem Group=dialout WorkingDirectory=/opt/fhem ExecStart=/usr/bin/perl fhem.pl fhem.cfg [Install] WantedBy=multi-user.target
Da der FHEM-Prozess sich nach dem Starten vom Eingabe-Terminal löst und im Hintergrund läuft, muss der Typ mit Type=forking
angegeben werden werden.
Startscript für einen unterstützenden Dienst
Für das Starten des HomeMatic-Daemons hmland
ist ein ähnliches Unit verantwortlich:
[Unit] Description=Homematic LAN Adapter service After=network.target [Service] ExecStart=/usr/local/bin/hmland -p 1234 [Install] WantedBy=multi-user.target
hmland
gibt den Prompt nach dem Starten nicht wieder frei, wenn die Option -d nicht gesetzt ist. In diesem Fall kann eine Angabe von Type=
entfallen.
Installation und Aktivierung
Die Dateien kommen ins Verzeichnis /etc/systemd/system
. Sie sollten nicht ausführbar gemacht werden. Der Start klappt auch mit ausführbaren Dateien, aber im Log (journalctl
) lösen ausführbare Dateien eine Warnung aus.
Nun muss einmalig der Befehl
systemctl daemon-reload
eingegeben werden, damit die neuen Dateien eingelesen werden. Mit dem Befehl
systemctl enable fhem.service
wird dafür gesorgt, dass bei einem Systemstart FHEM automatisch gestartet wird (ein symbolischer Link im mit WantedBy=
wird erstellt). Der automatische Start lässt sich mit
systemctl disable fhem.service
wieder deaktivieren.
Starten, Stoppen und Statusabfrage
Erfolgt ähnlich wie beim klassischen SysV-Init:
systemctl start fhem
systemctl stop fhem
systemctl status fhem
Abhängigkeiten
Durch den Eintrag in der Unit für FHEM Wants=hmland.service
wird dafür gesorgt, dass vor dem Start von FHEM der Daemon für den HomeMatic-Stick gestartet wird. Es können mehrere Dienste aufgelistet werden, die vorher gestartet werden müssen:
Wants=hmland.service knxd.service
Diese Units müssen darum nicht für den automatischen Start "enabled" werden. Sollte einer dieser Dienste nicht gestartet werden können, wird FHEM trotzdem gestartet.
Links
Systemd-Dokumentation: