我正在创造一条新的基本规则
/etc/udev/rules.d/10-myrule.rules内载:
KERNEL!="sdb*", GOTO="auto_mount_end"
ACTION=="add", RUN+="/usr/bin/mount /dev/sdb1 /media"
LABEL="auto_mount_end"我保存、重新启动并插入了SD卡(由/dev/sdb1识别,我在dmesg中看到它),但什么也没有发生。当我手动执行mount /dev/sdb1 /media时,它可以工作。
udev规则?注意:我使用的是ArchLinux,但是在任何发行版上都应该是相同的?
发布于 2015-06-05 08:25:01
RUN{type} ︙
注意,在udev规则中不允许运行访问网络或挂载/卸载文件系统的程序,因为默认沙箱是在systemd-udevd.service上强制执行的。原始答案调试提示对其他udev规则应用程序有效。
10-如jasonwryan所述,使用高编号(90's好)。所以你的规则不会被另一个规则推翻。!= & GOTO/LABEL直接使用== ACTION=="add“、KERNEL=="sdb*”、RUN+=“/usr/bin/挂载/dev/sdb 1 /media”sdb1,使用KERNEL=="sdb1"最小化盲匹配。udev-env.txt之后,规则就会被触发。对应于一个匹配节点的行==。该文件中记录的ENV可能是两个或更多节点之间的混合,几乎同时创建,这是一个stdout缓冲问题。udevadm monitor -u、udevadm test ...和udevadm trigger ...验证哪些规则处理了事件。stdout & stderr消息)来生成调试日志和捕获失败的命令。发布于 2020-09-05 00:21:26
此命令将允许您观察规则的执行情况:
udevadm control --log-priority=debug
journalctl -f(并通过udevadm control --log-priority=info将其恢复到正常水平)
发布于 2015-06-25 16:26:53
我想你要找的命令是udevadm。您将分别使用trigger和test参数来触发udev事件的重新扫描,并测试特定事件。
当我在EL 7中使用新的网络设备命名时,我很难学会这一点。祝你好运!
https://unix.stackexchange.com/questions/200194
复制相似问题