使用 conky 进行 SSD 温度测量

使用 conky 进行 SSD 温度测量

我在使用 conky 时遇到了问题。我安装了 hddtemp,我的 ssd 显示如下:

/dev/sda: Crucial_CT120M500SSD1: 39°C

现在我在 conky 中写道:

${alignr 10}${color}SSD M500 Crucial 120GB Temp ${color1}${hddtemp /dev/sda}ºC

但桌面显示N/A°C。

我该如何修复?问候

答案1

如果你不想一直hddtemp以守护进程模式运行,你也可以hddtemp改为以外部命令运行。但是,hddtemp需要以 root 身份运行:

$ hddtemp /dev/sda
/dev/sda: open: Permission denied
$ sudo hddtemp /dev/sda
/dev/sda: ST3500418AS: 35°C

因此,您首先需要授予用户运行该命令的权限。运行visudo并将此行添加到sudoers文件(更改linofex为您的实际用户名):

linofex  ALL=NOPASSWD:/usr/sbin/hddtemp

sudo hddtemp这样您无需输入密码即可运行。

现在,将文件中的以下行替换conkyrc为:

${alignr 10}${color}SSD M500 Crucial 120GB Temp ${color1}${exec sudo hddtemp /dev/sda | awk '{print $NF}'}

答案2

您需要首先使用以下命令启动 hddtemp 作为后台守护程序:

 hddtemp -d /dev/sda

${hddtemp ...}是 conky 内置对象。它默认连接到 127.0.0.1:7634 以获取磁盘温度。因此,您需要独立启动 hddtemp 守护进程,该守护进程监听此端口并回复信息。

另一种方法是使用${exec hddtemp /dev/sda}在每次窗口更新时运行 hddtemp 的方法,并且不需要守护进程。


如果您只想要温度,请将输出通过管道传输到 awk 中以获取倒数第二个字段(在我的情况下)即 $(NF-1),或者在您的情况下获取最后一个字段 $NF:

${exec hddtemp /dev/sda|awk '{print $NF}'}

答案3

另一个解决方案是允许 hddtemp:

sudo chmod +s /usr/sbin/hddtemp

然后(根据您的示例),在您的 conkyrc 文件中,该项目将变成:

${execi 1 hddtemp /dev/sda|sed 's%/dev/sda: %%' }

这将给你Crucial_CT120M500SSD1: 39°C

相关内容