如何让脚本在设备连接时“始终启动”?

如何让脚本在设备连接时“始终启动”?

我正在尝试在设备连接时运行脚本。我的 udev 和 systemd 文件已加载并触发,但只会启动一次脚本。如果我断开并重新连接设备,脚本将不再启动。我发现在脚本末尾重新加载 systemctl 将解决此问题(此方法仅适用于“用户”systemd 服务)。在以前的 Ubuntu 版本中,我能够简单地将 udev 与 systemd 一起使用,并且每次都能正常工作。无论我使用“用户”还是“系统”服务文件都无关紧要。它们都可以正常工作,这也允许我以 root 身份运行命令。

我不认为我的脚本是问题所在,因为简单的文件启动或通知发送命令只有在重新加载 systemctl 后(或者重新启动时)才会起作用。

如何使用 systemd,而不必不断重新加载 systemctl 才能使其工作?此外,如果可能的话,我如何重新获得 systemd/system 的使用权,以便能够以 root 身份运行脚本?

编辑:我正在使用 Ubuntu 20.04 的桌面版本。

我使用过该命令systemctl status,它显示我的服务失败了(不是我的自定义服务文件)。我禁用了该服务并重新加载。没有更多失败的服务,但我原来的问题仍然存在。

答案1

OP 的回答(已从问题中删除):

固定的:我将其添加ENV{SYSTEMD_USER_WANTS}+="myfile.service"到我的 udev 文件中,它似乎已经解决了这个问题。感谢 bac0n建议

此外,我也感谢所有奉献时间的志愿者。

我的udev参赛作品:

ACTION=="add", ATTRS{product}=="DTK-2100", ATTRS{idProduct}=="00cc", ATTRS{idVendor}=="056a", TAG+="systemd"

我的systemd参赛作品:

[Service]
Type=forking
Restart=no
ExecStart=/home/anon/xsetwacom.sh

[Install]
WantedBy=default.target
WantedBy=sys-devices-pci0000:00-0000:00:1a.2-usb5-5\x2d1-5\x2d1:1.0.device

相关内容