应该如何重新加载 udev 规则,以便新创建的规则能够运行?
我运行的是 Arch Linux,这里没有udevstart
命令。
还检查了/etc/rc.d
,那里没有 udev 服务。
答案1
# udevadm control --reload-rules && udevadm trigger
答案2
Udev 使用inotify监视规则目录、库和本地配置树(通常位于/lib/udev/rules.d
和/etc/udev/rules.d
)中的更改的机制。因此,大多数情况下,更改规则文件时不需要执行任何操作。
仅当您正在执行一些不寻常的操作时(例如,如果您的规则包含另一个目录中的文件),您只需显式通知 udev 守护程序。然后,您可以使用通常的约定来要求守护进程重新加载其配置:发送叹息( pkill -HUP udevd
)。或者您可以使用udevadm
命令:udevadm control --reload-rules
。
但是,请注意,不同版本的 udev 历来具有不同的自动重新加载规则的触发器。因此,如果有疑问,请致电udevadm control --reload-rules
:无论如何,它不会造成任何伤害。
udev 规则仅在添加设备时应用。如果您想将规则重新应用于已连接的设备,则需要明确执行此操作,方法是使用udevadm trigger
正确的选项调用以匹配配置已更改的设备,例如udevadm trigger --attr-match=vendor='Yoyodyne' --attr-match=model='Frobnicator 300'
。
答案3
我添加这个是因为有一天我会再次需要它。
有时您会发现以太网设备号和 MAC 地址的匹配不正确。有时这非常重要,例如在虚拟机中运行并且每个设备都分配给不同的 VLAN 时。
- 关闭网络接口,然后
- 修改
/etc/udev/rules.d/70-persistent-net.rules
(或等同于) - 重新加载
udevadm control --reload-rules
- 重新触发
udevadm trigger --attr-match=subsystem=net
- 启动网络接口。
我很惊讶这效果如此之好。
答案4
对我来说,以下命令序列已按预期工作。
我已经进行了修改以/etc/udev/rules.d/70-persistent-net.rules
更改eth
数字并重新加载它们而无需重新启动。
/etc/init.d/networking stop
/etc/init.d/udev stop
udevadm control --reload-rules
/etc/init.d/udev start
/etc/init.d/networking start
按照此操作,它在运行时成功加载,无需重新启动计算机。
欢迎对此提出任何建议或建议,因为我通过阅读手册页自己发现了这一点。