"enp5s0" is a predictable name how systemd/udev configures them, not the kernel. When a netif is renamed then this results in a "move" event, not "add" or "bind" or "change". Generally, in the vast majority of cases rules should be written with either a check of ACTION!="remove" or ACTION=="remove" depending on whether they should apply if the device is there, or when it goes away. The important part here is: don't list the many positive actions, but instead only specify the single negative action (i.e. "remove"). That's both more robust and safer for future actions to be added.
useful, thx. but still, with edit /etc/udev/rules.d/99-test.rules - ACTION=="add|bind|change", SUBSYSTEM=="net", KERNEL=="enp5s0", RUN+="/bin/touch /etc/test-touch.txt" + ACTION!="remove", SUBSYSTEM=="net", KERNEL=="enp5s0", RUN+="/bin/touch /etc/test-touch.txt" after boot, nothing done ls -al /etc/test-touch.txt (empty) and nothing logged, journalctl -b | grep 99-test (empty) but, MOVING the same rule to different location mv /etc/udev/rules.d/99-test.rules /usr/lib/udev/rules.d/ reboot then, it *IS* exec'd, ls -al /etc/test-touch.txt -rw-r--r-- 1 root root 0 Dec 22 08:20 /etc/test-touch.txt but still NOT logged journalctl -b | grep 99-test (empty) The questions remain: Why does the rule FAIL to exec when in /etc/udev/rules.d path, but DOES exec when in /usr/lib/udev/rules.d/ ? and Why is the rule read/load not logged in journal ?