PVE一键安装lm-sensors CPU温度频率显示及降低CPU功耗脚本

2022-07-19
0评论
/
阅读
爱搜啊

脚本原地址shell脚本,一键给pve7,增加温度和cpu频率显示-恩山无线论坛

这里说下详细的脚本使用方法

PVE7.0-7.2通用一键CPU温度频率显示以及降低CPU功耗脚本

shell脚本,给pve7增加温度和cpu频率显示脚本

CPU温度频率显示脚本

教程如下:

1、禁用企业源

CPU温度频率显示脚本

2、安装必要的传感器驱动(一条一条的单独运行)

apt update
apt-get install lm-sensors
apt-get install nvme-cli
apt-get install hddtemp

3、利用控制台在home文件夹中创建一个名称为pve的脚本

cd /home/  #打开home文件夹
nano pve.sh  #新建一个脚本
#将文章下面提供代码粘贴进去
#按 ctrl+X 退出
#按 Y保存
#按回车返回控制台
chmod +x pve.sh   #赋予脚本可执行权限
./pve.sh   #执行脚本

需要粘贴的代码(可以直接复制下面的代码粘贴,或者下载下面链接里的脚本文件)

链接: https://pan.baidu.com/s/1WUQ6V2MHx8kzfB8QwBl45A?pwd=3jr9提取码: 3jr9

#!/usr/bin/env bash
np="/usr/share/perl5/PVE/API2/Nodes.pm"
pvejs="/usr/share/pve-manager/js/pvemanagerlib.js"
plib="/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js"
if ! sensors;then
  echo 安装lm-sensors
  apt update && apt install -y lm-sensors
fi
pvever=$(pveversion | awk -F"/" '{print $2}')
echo pve版本$pvever
echo 备份源文件
[ ! -e $np.$pvever.bak ] && cp $np $np.$pvever.bak || { echo 已经修改过,请务重复执行; exit 1;}
[ ! -e $pvejs.$pvever.bak ] && cp $pvejs $pvejs.$pvever.bak
[ ! -e $plib.$pvever.bak ] && cp $plib $plib.$pvever.bak
therm='$res->{thermalstate} = `sensors`;';
cpure='$res->{cpure} = `cat /proc/cpuinfo | grep -i  "cpu mhz"`;';
echo 修改node.pm:
sed -i "/PVE::pvecfg::version_text()/a $cpure\n$therm" $np
sed -n "/PVE::pvecfg::version_text()/,+5p"  $np
tmpf=tmpfile.temp
touch $tmpf
cat > $tmpf << 'EOF'
{
  itemId: 'thermal',
  colspan: 2,
  printBar: false,
  title: gettext('温度'),
  textField: 'thermalstate',
  renderer:function(value){
let b = value.trim().split(/\)\s+(?=[A-z]+-)/);
let c = b.map(function (v){
let name = v.match(/^[^-]+/)[0] + ': ';
let tempure = v.match(/(?<=:\s+\+)[\d\.]+/g).map( v => v + '°C');
if (/coretemp/i.test(name)) {
name = 'CPU温度: ';
tempure = tempure[0] + '(' +   tempure.slice(1).join(', ') + ')';
} else  {
tempure = tempure[0];
}
return name + tempure;
});
return c.join(' | ');
// const m = value.match(/(?<=:[^\+]+\+)\d+/g);
// const m2 = m.map( e => e + '°C');
// return `CPU: ${m2[0]}(${m2[1]},${m2[2]},${m2[3]},${m2[4]}) | BOARD: ${m2[5]} | NVME: ${m2[6]}`;
}
},
{
  itemId: 'cpumhz',
  colspan: 2,
  printBar: false,
  title: gettext('CPU频率'),
  textField: 'cpure',
  renderer:function(value){
const m = value.match(/(?<=:\s+)\d+/g);
const m2 = m.map(e => e + 'MHz');
return m2.join(' | ');
}
},
EOF
#找到关键字pveversion的行号
echo 修改pvemanagerlib.js
ln=$(sed -n '/pveversion/,+10{/},/{=;q}}' $pvejs)
echo "匹配的行号pveversion:" $ln
echo 修改结果:
sed -i "${ln}r $tmpf" $pvejs
sed -n '/pveversion/,+30p' $pvejs
rm $tmpf
echo 修改页面高度
sed -i -r '/widget\.pveNodeStatus/,+5{/height/{s#[0-9]+#360#}}' $pvejs
sed -n '/widget\.pveNodeStatus/,+5{/height/{p}}' $pvejs
sed -i -r '/\[logView\]/,+5{/heigh/{s#[0-9]+#460#;}}' $pvejs
sed -n '/\[logView\]/,+5{/heigh/{p}}' $pvejs
echo 修改去除订阅弹窗
sed -r -i '/\/nodes\/localhost\/subscription/,+10{/^\s+if \(res === null /{N;s#.+#\t\t  if(false){#}}' $plib
sed -n '/\/nodes\/localhost\/subscription/,+10p' $plib
systemctl restart pveproxy
echo "请刷新浏览器缓存shift+f5"

Shift+F5刷新一下网页

教程结束。

肯定会有很多细心的同学发现,负载不高的时候,这CPU频率怎么也一直最高频率,

接下来我们就来处理这个问题

首先我来安装一下CPU驱动

apt-get install cpufrequtils  #安装CPU驱动

查询cpu状态

cpufreq-info

一般到这一步就能看到cpu频率会根据负载再不断调整变化

再这基础上我们也可以手动修改CPU的运行模式,如上图pve默认为ondemand模式,

我们可选的模式有conservative, ondemand, userspace, powersave, performance, schedutil

conservative:保守模式,类似于ondemand,但调整相对较缓,想省电就用他吧。Google官方内核,kang内核默认模式。

ondemand:系统默认的超频模式,按需调节,内核提供的功能,一般官方内核默认的方式都是ondemand。

userspace:用户自定义模式,系统将变频策略的决策权交给了用户态应用程序。

powersave 省电模式,通常以最低频率运行。

performance:性能模式,只有最高频率,从来不考虑消耗的电量。

schedutil:一个新的交互模式,听说很牛,简单理解为interactive的升级版。

修改配置文件

文件位置/etc/init.d/cpufrequtils

也可以控制台进行修改

nano /etc/init.d/cpufrequtils
#
ENABLE="true"   
GOVERNOR="conservative"  #运行模式,依照需求调整
MAX_SPEED="0"         #自定义模式下设置cpu频率上限   ,非自定义模式不要填写,否则导致频率锁死最低频率
MIN_SPEED="0"         #下限
#

重启服务

systemctl daemon-reload
/etc/init.d/cpufrequtils restart

本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件


于2022-07-19发布