[systemd-devel] Pairing udev's SYSTEMD_WANTS and systemd's templated units

Lennart Poettering lennart at poettering.net
Wed Aug 13 16:55:26 PDT 2014

On Thu, 31.07.14 16:55, Ivan Shapovalov (intelfx100 at gmail.com) wrote:

> Hello all,
> I'm trying to start from an udev rule a templated systemd unit, whose instance
> should be a properly escaped device node path (so that %i.device would represent
> an existing unit). Which udev specifier should I use for this?
> Or, in more clear wording:
> given the rule:
> ACTION=="add", ..., TAG+="systemd", ENV{SYSTEMD_WANTS}+="foo@$some_specifier.service"
> and the unit foo at .service:
> [Unit]
> After=%i.device
> BindsTo=%i.device
> ...
> Which $some_specifier should I use in the udev rule to get %i.device in
> my service file to refer to the valid and corresponding device unit?
> The closest match I've got is "sys%p", but it does not work because dashes are not
> escaped, and I get
> "sys-devices-pci0000:00-0000:00:1d.0-usb4-4-1-4-1.2.device"
> instead of
> "sys-devices-pci0000:00-0000:00:1d.0-usb4-4\x2d1-4\x2d1.2.device"
> and so on.

Can you invoke systemd-escape from the udev rule? 


Lennart Poettering, Red Hat

More information about the systemd-devel mailing list