On Wed, Sep 24, 2025 at 8:27 PM Demi Marie Obenour <demiobenour@gmail.com> wrote:
There are cases where a RUN+= script needs to do something exactly once each time a device appears, such as binding a different driver to the device. If the udev rule matches based on a property (such as PCI device information) that is set only by the kernel, is it okay to use ACTION=="add" in the rule? The only other options I know of are to either
Such events can still be caused by the admin doing "udevadm trigger --action=". Not sure why one might do that, but probably better to not rely on nobody doing that.
1. Add additional code to the script to make sure it is idempotent. This might require adding a lock.
Maybe not necessarily a lock as I *think* udev event processing is serialized (for a given device at least); a flag file in /run or an xattr on the /dev node might be enough.
2. Use a persistent daemon.
It might be possible to have a persistent Type=oneshot .service via ENV{SYSTEMD_WANTS}, with RefuseManualStop. Not sure if that's a good idea.