我有一个从 udev 规则启动的 systemd 服务:
[Unit]
Description=Open DSLR camera device
[Service]
ExecStart=/bin/sh -c "/tmp/test.sh"
/tmp/test.sh
还没有做太多事情:
#!/bin/sh
echo "qwer" >> /tmp/dslr-udev-test.txt
我认为 udev 规则不相关(它在 USB 上连接我的 DSLR 相机时触发)。无论如何,这就是:
SUBSYSTEM=="usb", ACTION=="add", ATTR{product}=="Canon Digital Camera", TAG+="systemd", ENV{SYSTEMD_WANTS}="dslr-device.service"
运行sudo systemctl daemon-reload
并打开相机后,文件/tmp/dslr-udev-test.txt
会显示新内容。但只有一次!关闭相机然后再次打开不会显示新内容。
再次运行后sudo systemctl daemon-reload
,文件在打开相机时显示新内容,然后在进一步重新启动相机时不再显示内容。
是什么阻止服务ExecStart
在守护进程重新加载后多次运行?