[systemd-devel] Passing variables from udev to unit

Andrey Borzenkov arvidjaar at gmail.com
Thu Mar 13 19:27:26 PDT 2014


В Fri, 14 Mar 2014 08:53:45 +1000
Peter Hutterer <peter.hutterer at who-t.net> пишет:

> Hey,
> 
> I have a service file wacom-inputattach at .service that is started from a udev
> rule:
> 
>   SUBSYSTEM=="tty|pnp", KERNEL=="ttyS[0-9]*", ATTRS{id}=="WACf*",
>   TAG+="systemd", ENV{SYSTEMD_WANTS}+="wacom-inputattach@%k.service"
> 
> and the service file then runs:
> 
>   ExecStart=/usr/bin/inputattach -w8001 /dev/%I
> 
> That works fine, but now I need to pass a second parameter into the service
> file. Ideally I want to run something like:
> 
>   ExecStart=/usr/bin/inputattach --baud $BAUD -w8001 /dev/%I
> 
> I can set the baud rate based on ATTRS{id} in the udev rule, I just don't
> know if there is a way to pass this to the service file. Is there a way to
> do this or do I need to write a wrapper?


One possibility would be to generate 
/run/systemd/system/wacom-inputattach@%k.service.d/baud.conf that
contains

[Service]
BAUD=9600

But this requires systemd reload and may generate burst of reload
requests if there are multiple devices. May be wrapper is simpler.


More information about the systemd-devel mailing list