如何在不重新启动的情况下重新加载 udev 规则?

如何在不重新启动的情况下重新加载 udev 规则?

应该如何重新加载 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 时。

  1. 关闭网络接口,然后
  2. 修改/etc/udev/rules.d/70-persistent-net.rules(或等同于)
  3. 重新加载udevadm control --reload-rules
  4. 重新触发udevadm trigger --attr-match=subsystem=net
  5. 启动网络接口。

我很惊讶这效果如此之好。

答案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

按照此操作,它在运行时成功加载,无需重新启动计算机。

欢迎对此提出任何建议或建议,因为我通过阅读手册页自己发现了这一点。

相关内容