首页 文章

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

提问于
浏览
0

我写了两条 udev 规则,直到引入 systemctl 才行 .

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

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

规则如下:

  • SUBSYSTEM ==“usb”,ENV ==“usb_device”,ENV =“%s :%s ”,ACTION ==“add”,RUN =“/ etc / init.d / myscript plug%E “`

  • SUBSYSTEM ==“usb”,ACTION ==“remove”,ENV ==“usb_device”,ENV =“%E :%E ”,RUN =“/ etc / init.d / myscript unplug%E “`

请注意, myscript 接受两个参数:操作插头或拔出插头以及设备标识符 .

你知道如何解决问题或如何实现相同的 - 如果有必要的话 - systemctl

1 回答

  • 0

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

相关问题