Skip to content

Systemd Besonderheiten

seahawk1986 edited this page Feb 7, 2016 · 3 revisions

Units mit einander (Neu)starten

Angenommen Unit_B.service hängt fest von Unit_A.service ab und soll mit ihr neu gestartet werden (z.B. irexec mit eventlircd)

# UNIT B
[Unit]
BindsTo=unit_A.service
After=unit_A.service

Wenn Unit A ein Service aus einem bereits existierenden (System-)Paket ist, kann ein Snippet unter /lib/systemd/system/unit_A.service.d/unitB.conf angelegt werden, um die Abhängigkeit zu ergänzen:

# UNIT A
[Unit]
Before=unit_B.service
Wants=unit_B.service

Dienst abhängig von udev starten:

Variante 1

Das Gerät bekommt eine udev-Regel, die die passenden Attribute setzt:

ACTION=="add", ..., TAG+="systemd", ENV{SYSTEMD_WANTS}="myservice.service"

Variante 2:

Service reagiert auf ein bestimmtes Gerät, das den TAG “systemd” hat:

SUBSYSTEM=="dvb", TAG+="systemd"

Der Service bzw. ein Drop-In dafür bekommt dann das Gerät als Abhängigkeit (mit systemd-escape kann man sich den Pfad anzeigen lassen), z.B. für eine myservice@.service, die jeweils auf ein bestimmtes Gerät warten soll, das ihr pro Instanz übergeben wird:

[Unit]
Wants=dev-dvb-adapter%i-frontend0.device
Wants=dev-dvb-adapter%i-demux0.device
Wants=dev-dvb-adapter%i-dvr0.device
Wants=dev-dvb-adapter%i-net0.device

After=dev-dvb-adapter%i-frontend0.device
After=dev-dvb-adapter%i-demux0.device
After=dev-dvb-adapter%i-dvr0.device
After=dev-dvb-adapter%i-net0.device

[Service]
...

[Install]
...