我的系统是 Debian Buster,内核为 4.19。我有一个简单的 udev 规则,如下所示,它在 Debian Jessie 上运行良好。现在,同样的规则似乎不适用于较新的发行版。
KERNEL=="sd[a-z]1",SUBSYSTEM=="block",ACTION=="add|change",PROGRAM="/bin/lsblk --fs --noheadings -o FSTYPE $tempnode"
RESULT=="ext4",SYMLINK+="working_stick"
此规则适用于 Debian Jessie,也适用于当前发行版(Debian Buster),如果我手动运行“udevadm 触发器”,则此规则可以正常工作,但在正常工作场景中,此规则不会发挥作用。
我不确定我错过了什么。我提供错误案例和成功案例的日志。
当我发现 udev 规则文件中没有符号链接时,udev 的日志:
Oct 18 09:50:11 localhost systemd-udevd[28351]: sdb1: PROGRAM '/bin/lsblk --fs --noheadings -o FSTYPE /dev/sdb1' /etc/udev/rules.d/test.rules:19
Oct 18 09:50:11 localhost systemd-udevd[28351]: Starting '/bin/lsblk --fs --noheadings -o FSTYPE /dev/sdb1'
Oct 18 09:50:11 localhost systemd-udevd[28351]: Successfully forked off '(spawn)' as PID 30481.
Oct 18 09:50:11 localhost systemd-udevd[28351]: Process '/bin/lsblk --fs --noheadings -o FSTYPE /dev/sdb1' succeeded.
当我手动执行“udevadm触发器”时udev的日志,我发现正在创建符号链接:
10 月 18 日 11:20:20 本地主机 systemd-udevd[3758]: '/bin/lsblk --fs --noheadings -o FSTYPE /dev/sdb1'(out) 'ext4'****
Oct 18 11:20:20 localhost systemd-udevd[3758]: Process '/bin/lsblk --fs --noheadings -o FSTYPE /dev/sdb1' succeeded.
因此,在成功的情况下,日志中会多出一行,说明命令的输出写入到 RESULT 中。