Autostart von einem Service über systemd

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.