【问题标题】:udev rules with systemctl do no longer work as expected使用 systemctl 的 udev 规则不再按预期工作
【发布时间】:2016-04-04 19:57:27
【问题描述】:

我写了两条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 接受两个参数:plugunplug 操作以及设备标识符。

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

【问题讨论】:

    标签: linux usb systemd udev


    【解决方案1】:

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

    【讨论】:

    • 我如何将确切的参数 VID 和 PID 传递给 systemd 单元?
    猜你喜欢
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 2013-08-11
    • 2019-03-15
    相关资源
    最近更新 更多