使用systemctl的udev规则不再按预期工作

时间:2016-04-04 19:57:27

标签: linux usb systemd udev

我编写了两条udev规则,这些规则在引入systemctl之前一直运行良好。

这些规则在插入某种USB设备时运行守护程序,并在拔出同一设备时停止相同的守护程序。这是通过帮助脚本myscript完成的。

使用systemctl现在的问题是它显然会在设备插入几秒后杀死myscript调用的守护进程。

规则如下:

  • SUBSYSTEM ==“usb”,ENV {DEVTYPE} ==“usb_device”,               ENV {VID_PID} =“%s {idVendor}:%s {idProduct}”,ACTION ==“add”,               RUN + =“/ etc / init.d / myscript plug%E {VID_PID}”`

  • SUBSYSTEM ==“usb”,ACTION ==“remove”,ENV {DEVTYPE} ==“usb_device”, ENV {VID_PID} = “%E {ID_VENDOR_ID}:%E {ID_MODEL_ID}”, RUN + =“/ etc / init.d / myscript unplug%E {VID_PID}”`

请注意myscript接受两个参数:操作 plug unplug 和设备标识符。

您是否知道如何解决问题或如何实施相同的问题 - 如果有必要 - 就systemctl而言?

1 个答案:

答案 0 :(得分:0)

systemd.device手册页所示,请为您的服务编写单元文件,然后使用"systemd"标记设备,然后使用SYSTEMD_WANTS属性启动设备。不要将RUN属性用于长时间运行的进程。