cpuTemperatur() rewrite parsing hwmon (linux)
This commit is contained in:
parent
430051caaf
commit
9a32761531
61
lib/cpu.js
61
lib/cpu.js
@ -17,6 +17,7 @@ const os = require('os');
|
|||||||
const exec = require('child_process').exec;
|
const exec = require('child_process').exec;
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const util = require('./util');
|
const util = require('./util');
|
||||||
|
const { execSync } = require('child_process');
|
||||||
|
|
||||||
let _platform = process.platform;
|
let _platform = process.platform;
|
||||||
|
|
||||||
@ -772,49 +773,35 @@ function cpuTemperature(callback) {
|
|||||||
max: -1.0
|
max: -1.0
|
||||||
};
|
};
|
||||||
if (_linux) {
|
if (_linux) {
|
||||||
const cmd = 'cat /sys/class/hwmon/hwmon0/temp*_la* 2>/dev/null;echo "---";cat /sys/class/hwmon/hwmon0/temp*_i* 2>/dev/null;echo "######";cat /sys/class/hwmon/hwmon1/temp*_la* 2>/dev/null;echo "---";cat /sys/class/hwmon/hwmon1/temp*_i* 2>/dev/null;echo "######";cat /sys/class/hwmon/hwmon2/temp*_la* 2>/dev/null;echo "---";cat /sys/class/hwmon/hwmon2/temp*_i* 2>/dev/null;echo "######";cat /sys/class/hwmon/hwmon3/temp*_la* 2>/dev/null;echo "---";cat /sys/class/hwmon/hwmon3/temp*_i* 2>/dev/null;';
|
const cmd = 'for mon in /sys/class/hwmon/hwmon*; do for label in "$mon"/temp*_label; do if [ -f $label ]; then value=$(echo $label | rev | cut -c 7- | rev)_input; if [ -f "$value" ]; then echo $(cat "$label")___$(cat "$value"); fi; fi; done; done;';
|
||||||
try {
|
try {
|
||||||
exec(cmd, function (error, stdout) {
|
exec(cmd, function (error, stdout) {
|
||||||
// if (!error) {
|
let lines = stdout.toString().split('\n');
|
||||||
let sections = stdout.toString().split('######\n');
|
lines.forEach(line => {
|
||||||
let bestSection = -1
|
const parts = line.split('___');
|
||||||
let lineCount = 0
|
const label = parts[0];
|
||||||
for (let i = 0; i < sections.length; i++) {
|
const value = parts.length > 1 && parts[1] ? parts[1] : '0';
|
||||||
const lines = sections[i].split('\n');
|
if (value && (label === undefined || (label && label.toLowerCase().startsWith('core')))) {
|
||||||
if (lineCount < lines.length) {
|
result.cores.push(Math.round(parseInt(value, 10) / 100) / 10);
|
||||||
lineCount = lines.length;
|
} else if (value && label && result.main === -1) {
|
||||||
bestSection = i;
|
result.main = Math.round(parseInt(value, 10) / 100) / 10;
|
||||||
}
|
}
|
||||||
};
|
})
|
||||||
|
|
||||||
if (bestSection >= 0 && lineCount > 2) {
|
if (result.cores.length > 0) {
|
||||||
let parts = sections[bestSection].split('---');
|
if (result.main === -1) {
|
||||||
// let parts = stdout.toString().split('---');
|
result.main = Math.round(result.cores.reduce((a, b) => a + b, 0) / result.cores.length);
|
||||||
let labels = parts[0].split('\n');
|
|
||||||
let temps = parts[1].split('\n');
|
|
||||||
temps.shift();
|
|
||||||
for (let i = 0; i < temps.length; i++) {
|
|
||||||
if (temps[i] && (labels[i] === undefined || (labels[i] && labels[i].toLowerCase().startsWith('core')))) {
|
|
||||||
result.cores.push(Math.round(parseInt(temps[i], 10) / 100) / 10);
|
|
||||||
} else if (temps[i] && labels[i] && result.main === -1) {
|
|
||||||
result.main = Math.round(parseInt(temps[i], 10) / 100) / 10;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (result.cores.length > 0) {
|
let maxtmp = Math.max.apply(Math, result.cores);
|
||||||
if (result.main === -1) {
|
result.max = (maxtmp > result.main) ? maxtmp : result.main;
|
||||||
result.main = Math.round(result.cores.reduce((a, b) => a + b, 0) / result.cores.length);
|
}
|
||||||
}
|
if (result.main !== -1) {
|
||||||
let maxtmp = Math.max.apply(Math, result.cores);
|
if (result.max === -1) {
|
||||||
result.max = (maxtmp > result.main) ? maxtmp : result.main;
|
result.max = result.main;
|
||||||
}
|
|
||||||
if (result.main !== -1) {
|
|
||||||
if (result.max === -1) {
|
|
||||||
result.max = result.main;
|
|
||||||
}
|
|
||||||
if (callback) { callback(result); }
|
|
||||||
resolve(result);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
if (callback) { callback(result); }
|
||||||
|
resolve(result);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
// }
|
// }
|
||||||
exec('sensors', function (error, stdout) {
|
exec('sensors', function (error, stdout) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user