Hier mal nur ein kurzer Anriss, wie man einen Service in systemd registrieren und starten kann. Als Beispiel nehme ich hier den Service knxd, welchen ich für meine OpenHAB Instanz brauche.
Als erstes müssen wir eine neue Unit-Datei anlegen. Hier gibt es mehrere Ordner, in denen die Unit-Datein angelegt werden. Da es sich um eine reine User-Unit handelt, lege ich diese in im etc Ordner an:
sudo vim /etc/systemd/system/knxd.service
Nun füge ich folgenden Inhalt ein:
[Unit] Description=knxd service After=network.target [Service] Type=simple #User=knxd ExecStart=knxd --eibaddr=1.1.128 --client-addrs=1.1.129:8 -D -T -R -S -i --listen-local=/tmp/knx -b usb: ExecStartPre=touch /var/knxd/knxdstarted Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
Nun tur Erklärung
- Unit.Description ist eine allgemeine Beschriftung des Services. Dieser Eintrag ist zwingend notwendig.
- Unit.After definiert , welche Dienste zuvor gestartet werden müssen. Das .target bedeuted, das es sich hier um eine Dienste-Gruppe handelt
- Service.Type besagt, dass es sich um einen eigenständigen Dienst handelt.
- Service.ExecStart definiert den Befehl, welcher beim Starten ausgeführt werden soll.
- Service.ExecStartPre oder Service.ExecStartPost gibt an, welche Befehle vor bzw nach der Ausführung ausgeführt werden sollen. Diese dürfen auch mehrfach verwendet werden.
- Service.User gibt den Benutzer an, mit welchen Rechten der Service ausgeführt werden soll. In meinem Fall habe ich knxd vorers auskommentiert, da ich sonst Probleme mit dem Zugriff auf die USB-Schnitstelle habe.
- Service.Restart gibt an das der Service im Fehlerfall immer wieder neu gestartet werden soll
- Service.RestartSec gibt die Wartezeit bis zum Neustart an
- Install.WantedBy gibt an, bei welchem Startmodus der Service gestartet werden soll. Dies ist in der Regel die Multi-User umgebung.
Nachdem diese Datei gespeichert ist, muss diese Unit noch mit sudo systemctrl enable knxd.service
aktiviert werden. Ab nun startet der Service immer beim Starten des Systems.
Manuell kann dieser Service mit sudo systemctrl start knxd.service
gestartet werden. Der aktuelle Status kann mit sudo systemctrl status knxd.service
abgefragt werden. Außerdem bietet das Programm systemctrl noch weiterreichende möglichkeiten wie auch das bearbeiten.
Der Status von dem Service wurd stabdardnäßif im systemd journal geloggt. Um den aktuellen log aufzurufen genügt die Eingabe von sudo journalctl -u knxd.service
. Mit dem optionalen Parameter -f
ist außerdem das dauerhafte folgen (follow) des logs möglich.