如果是这样,这对现代 Linux 发行版来说可能是一个巨大的打击,因为设备名称通常是任意分配的。因此,如果系统中的 HDD 不超过两个,但端口中有两个 USB 闪存驱动器,则启动后情况可能如下所示:
/dev/sda .. HDD #1
/dev/sdb .. USB flash drive #1
/dev/sdc .. USB flash drive #2
/dev/sdd .. HDD #2
我到处搜索,并尝试了各种技巧,但都.conkyrc
无济于事。它似乎不起作用。
我什至想过通过执行系统命令来“创建”conky所需的格式,但即使这样也失败了。在 中bash
,这可以通过以下方式实现
$ basename $(readlink /dev/disk/by-label/mydisklabel)
虽然 conky 确实允许执行系统命令,但在 {diskio}/{diskiograph} 选项中,这是不可能的。
所以以下内容将不起作用:
${diskio /dev/${execp basename $(readlink /dev/disk/by-label/mydisklabel)}}
带有 UUID 的变体也不起作用(此处未显示)。
你们中有人曾经设法“教”过这个给 conky 吗?它的用途非常广泛,但令人难以置信的是(与过去的美好时光相比),udev
朋友们将不再按特定顺序保留驱动器,而是在每次启动顺序时再次打乱它们,而工具(GKrellM 也好不到哪儿去!)坚持使用物理驱动器/设备名称。
答案1
/dev/disk/by-??
要完整使用任何路径,如下所示:
${diskio /dev/disk/by-label/mydisklabel}
您需要拥有conky
1.9.1 或更高版本,即conky-ng
.从 Fedora 20 开始,它作为软件包提供conky
。 Ubuntu 仍在使用旧版本(从 Ubuntu 14.04 开始),因此您需要编译conky-ng
.后者对于 Arch Linux 来说也是如此。
Disk IO
下面屏幕截图中的行显示它在终端中运行时处理by-label
条目。.conkyrc
find .
请注意,路径的最后一个字符和右大括号 ( ) 之间不应有空格,}
否则conky
会抱怨路径未找到。
答案2
查看源代码后,似乎符号链接的名称解析是以相对方式完成的。该程序在应该使用 realpath(3) 的地方使用了 readlink(2)。使用时,如果 conky 的当前工作目录不是,/dev/disk/by-id/wwn-*
则解析失败。../../sd?
/dev/disk/by-id
要使用标签,您可以使用label:some_disk_label
并且它应该可以工作。要获取 by-id/by-uuid,作者必须接受我的拉取请求https://github.com/brndnmtthws/conky/pull/238其中我将 diskio 路径解析方法转换为使用 realpath(3)。