为什么 /sys/bus/platform/devices 中的文件夹层次结构在重新启动时会发生变化?

为什么 /sys/bus/platform/devices 中的文件夹层次结构在重新启动时会发生变化?

我使用 conky 来显示我的 CPU 温度状态,总体来说我很满意,除了一件事:每次重新启动时,温度状态都会中断!

看看 conky 的 stderr 我看到了这个:

conky: can't open '/sys/bus/platform/devices/coretemp.0/hwmon/hwmon3/temp1_input': No such file or directory

“这很奇怪,”我想,“在我重新启动之前,它运行得很好。”

于是我进去一看/sys/bus/platform/devices/coretemp.0/hwmon,发现原来被调用的文件夹hwmon3现在被调用了hwmon4。 “好吧”,所以我调整了 my.conkyrc来代替hwmon4

但当我再次重启时,它又坏了!

有没有办法可以强制该coretemp.0/hwmon设备下面始终具有相同的文件夹层次结构?

答案1

/sys/class/hwmon/符号链接似乎是根据模块加载的顺序创建的,您可以通过将它们列入黑名单来强制执行,然后按照中指定的所需顺序手动加载它们这个帖子

然而,conkyhwmon实际上接受设备的名称,因此您可以直接使用它!

例如,${hwmon 5 temp 1}我可以代替${hwmon coretemp temp 1}.

然后下面会列出当前的号码>姓名映射:

for dir in /sys/class/hwmon/*; do echo -n "$dir: "; cat $dir/name; done

sensors还列出了设备名称,但与适配器名称结合在一起。


如果您希望在没有 conky's 的情况下访问这些值hwmon(例如,对于 conky's execgraph),这可能是一个 hack,我不能保证它是可靠的,但是:/sys/class/hwmon/符号链接到的所有目录中都有一个编号的 hwmon 文件夹似乎只有一个文件夹,因此您只需使用*.

例如,我/sys/class/hwmon/hwmon5链接到/sys/bus/platform/devices/coretemp.0/hwmon/hwmon5,但其中没有其他目录,/sys/bus/platform/devices/coretemp.0/hwmon/因此我可以仅使用 eg 访问值cat /sys/bus/platform/devices/coretemp.0/hwmon/*/temp1_input

相关内容