我整个下午一直在与udev战斗。基本上我已经创建了一个规则来检测大容量存储设备何时插入系统。这个规则有效,我可以让它执行一个没有任何问题的脚本,这里是为了审查目的:
ACTION=="add", KERNEL=="sd?*", SUBSYSTEM=="block", RUN+="/usr/local/bin/udevhelper.sh"
我遇到的问题是脚本是作为某种对整个系统具有只读权限的奇怪用户执行的。我正在执行的脚本非常简单:
#!/bin/sh
cd /usr/local/bin
touch .drivedetect
echo "1" > .drivedetect
exit
基本上我希望udev运行这个脚本,只需在/ usr / local / bin文件夹中输出一个名为.drivedetect的文件。但正如我之前提到的那样,当我插入驱动器时,它会看到规则并执行规则但是当它尝试运行脚本时,它返回文件系统是只读脚本退出,错误代码为1 。 我目前正在运行这个覆盆子pi零和最新的Debian图像。 udev仍然从init.d运行,因为它没有注册的systemd服务。任何帮助都会很棒,如果您需要更多信息,请询问。
我尝试过的事情:
MODE="0660"
GROUP="plugdev"
Various combinations of RUN+="/bin/sh -c '/path/to/script'" and /bin/bash
OPTIONS="last_rule"
最后但并非最不重要的是,我尝试在主用户名下运行脚本
#!/bin/sh
su pi drivedetect
答案 0 :(得分:3)
当我刚刚使用
时,我遇到了同样的问题udevadm control --reload-rules
编辑udev规则后。但是,如果我这样做:
sudo /etc/init.d/udev restart
脚本可以编辑文件。
重启不够。我必须在启动后重启。然后按预期工作,直到下次重启。
这是一个带有stretch-lite的rpi。