[systemd-devel] Problem: Renaming the USB network interface makes SYSTEMD_WANTS not working

Andrei Borzenkov arvidjaar at gmail.com
Mon Aug 29 13:19:12 UTC 2022


On 28.08.2022 23:35, Charles wrote:
> Hello,
> 
> Adding NAME="mywifi" to an udev rule causes the SYSTEMD_WANTS service to not be executed. Removing NAME="mywifi" and the service is executed. How come?
>> 
>> /etc/udev/rules.d/10-network.rules
>> SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="...", TAG+="systemd", ENV{SYSTEMD_WANTS}="test.service"
> 
> /etc/systemd/system/test.service
> 
>> [Service]
>> Type=simple
>> ExecStart=/bin/echo %n started!
> 
> First try, it works:
> I type:
> 
>> # journalctl -f -u test.service
> 
> I plug the USB Wi-Fi device and it prints:
> 
>> "test.service started!"
> 
> Note that ip link show returns wlan1.
> 
> Now I add NAME="mywifi" which gives:
> 
>> /etc/udev/rules.d/10-network.rules
>> SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="...", NAME="mywifi", TAG+="systemd", ENV{SYSTEMD_WANTS}="test.service"
> 
> I plug the USB Wi-Fi device and it prints nothing.
> Note that ip link show returns mywifi.
> I remove NAME="mywifi" and it prints "test.service started!" again.
> 

My best guess is that rename results in addition uevent which wipes out
previous udev device state including SYTSEMD_WANTS. Try "udevadm
monitor" to see the difference.

General consensus is that you should use

ACTION!="remove"

instead of explicit

ACTION=="add"

unless you really want different rules for different uevents.

> I really do not understand. When using RUN, it works all the time. SYSTEMD_WANTS seems to work only when the interface is not renamed. I tried also to rename it with a .link file, it got renamed but the service is still not triggered.
> 
> Hope you can help me out.
> Thanks in advance for your time,
> Charles
> 
> Sent with [Proton Mail](https://proton.me/) secure email.



More information about the systemd-devel mailing list