| 4.27.4 |
2020-09-16 |
diff --git a/docs/index.html b/docs/index.html
index 8c590df..d0de8c6 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -168,7 +168,7 @@
systeminformation
- Current Version: 4.27.4
+ Current Version: 4.27.5
diff --git a/lib/cpu.js b/lib/cpu.js
index 22d9cd4..b4b94a2 100644
--- a/lib/cpu.js
+++ b/lib/cpu.js
@@ -758,100 +758,105 @@ function cpuTemperature(callback) {
};
if (_linux) {
const cmd = 'cat /sys/class/hwmon/hwmon1/temp*_la*;echo "---";cat /sys/class/hwmon/hwmon1/temp*_i*';
- exec(cmd, function (error, stdout) {
- if (!error) {
- let parts = stdout.toString().split('---');
- 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) {
- if (result.main === -1) {
- result.main = Math.round(result.cores.reduce((a, b) => a + b, 0) / result.cores.length);
- }
- let maxtmp = Math.max.apply(Math, result.cores);
- result.max = (maxtmp > result.main) ? maxtmp : result.main;
- }
- if (result.main !== -1) {
- if (result.max === -1) {
- result.max = result.main;
- }
- if (callback) { callback(result); }
- resolve(result);
- return;
- }
- }
- exec('sensors', function (error, stdout) {
+ try {
+ exec(cmd, function (error, stdout) {
if (!error) {
- let lines = stdout.toString().split('\n');
- let tdieTemp = -1;
- lines.forEach(function (line) {
- let regex = /[+-]([^°]*)/g;
- let temps = line.match(regex);
- let firstPart = line.split(':')[0].toUpperCase();
- if (firstPart.indexOf('PHYSICAL') !== -1 || firstPart.indexOf('PACKAGE') !== -1) {
- result.main = parseFloat(temps);
+ let parts = stdout.toString().split('---');
+ 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 (firstPart.indexOf('CORE ') !== -1) {
- result.cores.push(parseFloat(temps));
- }
- if (firstPart.indexOf('TDIE') !== -1 && tdieTemp === -1) {
- tdieTemp = parseFloat(temps);
- }
- });
+ }
if (result.cores.length > 0) {
if (result.main === -1) {
result.main = Math.round(result.cores.reduce((a, b) => a + b, 0) / result.cores.length);
}
let maxtmp = Math.max.apply(Math, result.cores);
result.max = (maxtmp > result.main) ? maxtmp : result.main;
- } else {
- if (result.main === -1 && tdieTemp !== -1) {
- result.main = tdieTemp;
- result.max = tdieTemp;
- }
}
- if (result.main !== -1.0 || result.max !== -1.0) {
+ if (result.main !== -1) {
+ if (result.max === -1) {
+ result.max = result.main;
+ }
if (callback) { callback(result); }
resolve(result);
return;
}
}
- fs.stat('/sys/class/thermal/thermal_zone0/temp', function (err) {
- if (err === null) {
- fs.readFile('/sys/class/thermal/thermal_zone0/temp', function (error, stdout) {
- if (!error) {
- let lines = stdout.toString().split('\n');
- if (lines.length > 0) {
- result.main = parseFloat(lines[0]) / 1000.0;
- result.max = result.main;
- }
+ exec('sensors', function (error, stdout) {
+ if (!error) {
+ let lines = stdout.toString().split('\n');
+ let tdieTemp = -1;
+ lines.forEach(function (line) {
+ let regex = /[+-]([^°]*)/g;
+ let temps = line.match(regex);
+ let firstPart = line.split(':')[0].toUpperCase();
+ if (firstPart.indexOf('PHYSICAL') !== -1 || firstPart.indexOf('PACKAGE') !== -1) {
+ result.main = parseFloat(temps);
}
+ if (firstPart.indexOf('CORE ') !== -1) {
+ result.cores.push(parseFloat(temps));
+ }
+ if (firstPart.indexOf('TDIE') !== -1 && tdieTemp === -1) {
+ tdieTemp = parseFloat(temps);
+ }
+ });
+ if (result.cores.length > 0) {
+ if (result.main === -1) {
+ result.main = Math.round(result.cores.reduce((a, b) => a + b, 0) / result.cores.length);
+ }
+ let maxtmp = Math.max.apply(Math, result.cores);
+ result.max = (maxtmp > result.main) ? maxtmp : result.main;
+ } else {
+ if (result.main === -1 && tdieTemp !== -1) {
+ result.main = tdieTemp;
+ result.max = tdieTemp;
+ }
+ }
+ if (result.main !== -1.0 || result.max !== -1.0) {
if (callback) { callback(result); }
resolve(result);
- });
- } else {
- exec('/opt/vc/bin/vcgencmd measure_temp', function (error, stdout) {
- if (!error) {
- let lines = stdout.toString().split('\n');
- if (lines.length > 0 && lines[0].indexOf('=')) {
- result.main = parseFloat(lines[0].split('=')[1]);
- result.max = result.main;
- }
- }
- if (callback) { callback(result); }
- resolve(result);
- });
+ return;
+ }
}
+ fs.stat('/sys/class/thermal/thermal_zone0/temp', function (err) {
+ if (err === null) {
+ fs.readFile('/sys/class/thermal/thermal_zone0/temp', function (error, stdout) {
+ if (!error) {
+ let lines = stdout.toString().split('\n');
+ if (lines.length > 0) {
+ result.main = parseFloat(lines[0]) / 1000.0;
+ result.max = result.main;
+ }
+ }
+ if (callback) { callback(result); }
+ resolve(result);
+ });
+ } else {
+ exec('/opt/vc/bin/vcgencmd measure_temp', function (error, stdout) {
+ if (!error) {
+ let lines = stdout.toString().split('\n');
+ if (lines.length > 0 && lines[0].indexOf('=')) {
+ result.main = parseFloat(lines[0].split('=')[1]);
+ result.max = result.main;
+ }
+ }
+ if (callback) { callback(result); }
+ resolve(result);
+ });
+ }
+ });
});
});
- });
+ } catch (er) {
+ if (callback) { callback(result); }
+ resolve(result);
+ }
}
if (_freebsd || _openbsd || _netbsd) {
exec('sysctl dev.cpu | grep temp', function (error, stdout) {
@@ -962,29 +967,35 @@ function cpuFlags(callback) {
}
}
if (_linux) {
- exec('export LC_ALL=C; lscpu; unset LC_ALL', function (error, stdout) {
- if (!error) {
- let lines = stdout.toString().split('\n');
- lines.forEach(function (line) {
- if (line.split(':')[0].toUpperCase().indexOf('FLAGS') !== -1) {
- result = line.split(':')[1].trim().toLowerCase();
- }
- });
- }
- if (!result) {
- fs.readFile('/proc/cpuinfo', function (error, stdout) {
- if (!error) {
- let lines = stdout.toString().split('\n');
- result = util.getValue(lines, 'features', ':', true).toLowerCase();
- }
+ try {
+
+ exec('export LC_ALL=C; lscpu; unset LC_ALL', function (error, stdout) {
+ if (!error) {
+ let lines = stdout.toString().split('\n');
+ lines.forEach(function (line) {
+ if (line.split(':')[0].toUpperCase().indexOf('FLAGS') !== -1) {
+ result = line.split(':')[1].trim().toLowerCase();
+ }
+ });
+ }
+ if (!result) {
+ fs.readFile('/proc/cpuinfo', function (error, stdout) {
+ if (!error) {
+ let lines = stdout.toString().split('\n');
+ result = util.getValue(lines, 'features', ':', true).toLowerCase();
+ }
+ if (callback) { callback(result); }
+ resolve(result);
+ });
+ } else {
if (callback) { callback(result); }
resolve(result);
- });
- } else {
- if (callback) { callback(result); }
- resolve(result);
- }
- });
+ }
+ });
+ } catch (e) {
+ if (callback) { callback(result); }
+ resolve(result);
+ }
}
if (_freebsd || _openbsd || _netbsd) {
exec('export LC_ALL=C; dmidecode -t 4 2>/dev/null; unset LC_ALL', function (error, stdout) {
@@ -1041,28 +1052,33 @@ function cpuCache(callback) {
l3: -1,
};
if (_linux) {
- exec('export LC_ALL=C; lscpu; unset LC_ALL', function (error, stdout) {
- if (!error) {
- let lines = stdout.toString().split('\n');
- lines.forEach(function (line) {
- let parts = line.split(':');
- if (parts[0].toUpperCase().indexOf('L1D CACHE') !== -1) {
- result.l1d = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
- }
- if (parts[0].toUpperCase().indexOf('L1I CACHE') !== -1) {
- result.l1i = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
- }
- if (parts[0].toUpperCase().indexOf('L2 CACHE') !== -1) {
- result.l2 = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
- }
- if (parts[0].toUpperCase().indexOf('L3 CACHE') !== -1) {
- result.l3 = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
- }
- });
- }
+ try {
+ exec('export LC_ALL=C; lscpu; unset LC_ALL', function (error, stdout) {
+ if (!error) {
+ let lines = stdout.toString().split('\n');
+ lines.forEach(function (line) {
+ let parts = line.split(':');
+ if (parts[0].toUpperCase().indexOf('L1D CACHE') !== -1) {
+ result.l1d = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
+ }
+ if (parts[0].toUpperCase().indexOf('L1I CACHE') !== -1) {
+ result.l1i = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
+ }
+ if (parts[0].toUpperCase().indexOf('L2 CACHE') !== -1) {
+ result.l2 = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
+ }
+ if (parts[0].toUpperCase().indexOf('L3 CACHE') !== -1) {
+ result.l3 = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
+ }
+ });
+ }
+ if (callback) { callback(result); }
+ resolve(result);
+ });
+ } catch (e) {
if (callback) { callback(result); }
resolve(result);
- });
+ }
}
if (_freebsd || _openbsd || _netbsd) {
exec('export LC_ALL=C; dmidecode -t 7 2>/dev/null; unset LC_ALL', function (error, stdout) {