未应用 Udev 规则

未应用 Udev 规则

我在 ubuntu 19.10 上有一个简单的 udev 规则

ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/sbin/hdparm -B 127 -S 120 /dev/%k"

我有 2 个可以应用此功能的驱动器

# lsblk -d -o name,rota
NAME    ROTA
loop0      0
loop1      0
loop2      0
loop3      0
sda        1
sdb        1
sdc        0
sdd        1
nvme0n1    0

启动后,我检查磁盘

# hdparm -B /dev/sda

/dev/sda:
 APM_level      = 127
# hdparm -B /dev/sdd

/dev/sdd:
 APM_level      = 254
#

我不太明白为什么它不应用于/dev/sdd.我能够从 shell 执行该命令,并且运行/dev/sdd良好。

还可以通过以下方式触发规则:

udevadm trigger /dev/sdd

正确执行命令。

关于如何调试这个问题有什么想法吗?

附言。/dev/sdb不支持APM属性,难道udev因为hdparm失败而停止执行?在这种情况下我该如何跳过/dev/sdb呢?

更新:

在尝试了相当多的时间并制作了一个 shell 脚本来记录它的输出之后,hdparm它的输出看起来像是hdparm显示驱动器已更新。但是当我检查驱动器设置时,它们没有被应用!

所以,现在我已经在中设置了设置/etc/hdparm.conf

/dev/sda {
        apm = 127
        spindown_time = 120
}

/dev/sdb {
        spindown_time = 120
}

/dev/sdd {
        apm = 127
        spindown_time = 120
}

现在所有设置都已应用

也许不如使用规则那么优雅,udev但它确实有效!

相关内容