@byxiaoxie2 月前
11/15
23:40
PVE 添加 CPU GPU Nvme 温度显示 (AMD CPU)
1. 安装必要的软件包 apt-update && apt-get install lm-sensors -y 2. 安装完成后执行指令 [sensors] root@pve:~# sensors amdgpu-pci-0500 Adapter: PCI adapter vddgfx: 1.44 V vddnb: 937.00 mV edge: +50.0°C PPT: 14.00 W nvme-pci-0400 Adapter: PCI adapter Composite: +53.9°C (low = -5.2°C, high = +79.8°C) (crit = +84.8°C) k10temp-pci-00c3 Adapter: PCI adapter Tctl: +52.8°C 3. 下面代码的正则表达式需要按照上面的输出文本进行调整
4. 找到文件 [Nodes.pm] 路径:[/usr/share/perl5/PVE/API2]
搜索代码关键字: $dinfo = df('/', 1); 在它的下面添加代码: $res->{CPUtemperature} = `sensors`; $res->{GPUtemperature} = `sensors`; $res->{Nvmetemperature} = `sensors`; 修改后的样子: my $dinfo = df('/', 1); # output is bytes $res->{CPUtemperature} = `sensors`; $res->{GPUtemperature} = `sensors`; $res->{Nvmetemperature} = `sensors`; $res->{rootfs} = { total => $dinfo->{blocks}, avail => $dinfo->{bavail}, used => $dinfo->{used}, free => $dinfo->{blocks} - $dinfo->{used}, }; return $res;
5. 找到文件 [pvemanagerlib.js] 路径:[/usr/share/pve-manager/js]
搜索代码找到关键字 [PVE.node.StatusView]: Ext.define('PVE.node.StatusView', {}) 关键字下面找到高度: height: 350, // 按需求增加高度 例如我自己的是:height: 450 添加温度显示代码,找到 [items] 在代码中添加: { itemId: 'CPUtemperature', colspan: 2, printBar: false, title: gettext('CPU Temperature'), textField: 'CPUtemperature', renderer: function(value){ const regex = /Tctl:\s+([-+]?[0-9]*\.?[0-9]+)/; const match = value.match(regex); const temperature = match ? parseFloat(match[1]) : null; return ` ${temperature}℃`; } }, { itemId: 'GPUtemperature', colspan: 2, printBar: false, title: gettext('GPU Temperature'), textField: 'GPUtemperature', renderer: function(value){ const regex = /edge:\s+([-+]?[0-9]*\.?[0-9]+)/; const match = value.match(regex); const temperature = match ? parseFloat(match[1]) : null; return ` ${temperature}℃`; } }, { itemId: 'Nvmetemperature', colspan: 2, printBar: false, title: gettext('Nvme Temperature'), textField: 'Nvmetemperature', renderer: function(value){ const nvmeTemps = Array.from(value.matchAll(/Composite.*?\+([\d\.]+)?/g), m=>m[1]); return nvmeTemps.map((element, index) => `${element}℃`).join(' | '); } } 添加完成后重启PVE面板: systemctl restart pveproxy