mem() fixed error handling
This commit is contained in:
+78
-63
@@ -166,60 +166,70 @@ function mem(callback) {
|
||||
};
|
||||
|
||||
if (_linux) {
|
||||
fs.readFile('/proc/meminfo', function (error, stdout) {
|
||||
if (!error) {
|
||||
const lines = stdout.toString().split('\n');
|
||||
result.total = parseInt(util.getValue(lines, 'memtotal'), 10);
|
||||
result.total = result.total ? result.total * 1024 : os.totalmem();
|
||||
result.free = parseInt(util.getValue(lines, 'memfree'), 10);
|
||||
result.free = result.free ? result.free * 1024 : os.freemem();
|
||||
result.used = result.total - result.free;
|
||||
try {
|
||||
fs.readFile('/proc/meminfo', function (error, stdout) {
|
||||
if (!error) {
|
||||
const lines = stdout.toString().split('\n');
|
||||
result.total = parseInt(util.getValue(lines, 'memtotal'), 10);
|
||||
result.total = result.total ? result.total * 1024 : os.totalmem();
|
||||
result.free = parseInt(util.getValue(lines, 'memfree'), 10);
|
||||
result.free = result.free ? result.free * 1024 : os.freemem();
|
||||
result.used = result.total - result.free;
|
||||
|
||||
result.buffers = parseInt(util.getValue(lines, 'buffers'), 10);
|
||||
result.buffers = result.buffers ? result.buffers * 1024 : 0;
|
||||
result.cached = parseInt(util.getValue(lines, 'cached'), 10);
|
||||
result.cached = result.cached ? result.cached * 1024 : 0;
|
||||
result.slab = parseInt(util.getValue(lines, 'slab'), 10);
|
||||
result.slab = result.slab ? result.slab * 1024 : 0;
|
||||
result.buffcache = result.buffers + result.cached + result.slab;
|
||||
result.buffers = parseInt(util.getValue(lines, 'buffers'), 10);
|
||||
result.buffers = result.buffers ? result.buffers * 1024 : 0;
|
||||
result.cached = parseInt(util.getValue(lines, 'cached'), 10);
|
||||
result.cached = result.cached ? result.cached * 1024 : 0;
|
||||
result.slab = parseInt(util.getValue(lines, 'slab'), 10);
|
||||
result.slab = result.slab ? result.slab * 1024 : 0;
|
||||
result.buffcache = result.buffers + result.cached + result.slab;
|
||||
|
||||
let available = parseInt(util.getValue(lines, 'memavailable'), 10);
|
||||
result.available = available ? available * 1024 : result.free + result.buffcache;
|
||||
result.active = result.total - result.available;
|
||||
let available = parseInt(util.getValue(lines, 'memavailable'), 10);
|
||||
result.available = available ? available * 1024 : result.free + result.buffcache;
|
||||
result.active = result.total - result.available;
|
||||
|
||||
result.swaptotal = parseInt(util.getValue(lines, 'swaptotal'), 10);
|
||||
result.swaptotal = result.swaptotal ? result.swaptotal * 1024 : 0;
|
||||
result.swapfree = parseInt(util.getValue(lines, 'swapfree'), 10);
|
||||
result.swapfree = result.swapfree ? result.swapfree * 1024 : 0;
|
||||
result.swapused = result.swaptotal - result.swapfree;
|
||||
}
|
||||
result.swaptotal = parseInt(util.getValue(lines, 'swaptotal'), 10);
|
||||
result.swaptotal = result.swaptotal ? result.swaptotal * 1024 : 0;
|
||||
result.swapfree = parseInt(util.getValue(lines, 'swapfree'), 10);
|
||||
result.swapfree = result.swapfree ? result.swapfree * 1024 : 0;
|
||||
result.swapused = result.swaptotal - result.swapfree;
|
||||
}
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
});
|
||||
} catch (e) {
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
});
|
||||
}
|
||||
}
|
||||
if (_freebsd || _openbsd || _netbsd) {
|
||||
exec('/sbin/sysctl hw.realmem hw.physmem vm.stats.vm.v_page_count vm.stats.vm.v_wire_count vm.stats.vm.v_active_count vm.stats.vm.v_inactive_count vm.stats.vm.v_cache_count vm.stats.vm.v_free_count vm.stats.vm.v_page_size', function (error, stdout) {
|
||||
if (!error) {
|
||||
let lines = stdout.toString().split('\n');
|
||||
const pagesize = parseInt(util.getValue(lines, 'vm.stats.vm.v_page_size'), 10);
|
||||
const inactive = parseInt(util.getValue(lines, 'vm.stats.vm.v_inactive_count'), 10) * pagesize;
|
||||
const cache = parseInt(util.getValue(lines, 'vm.stats.vm.v_cache_count'), 10) * pagesize;
|
||||
try {
|
||||
exec('/sbin/sysctl hw.realmem hw.physmem vm.stats.vm.v_page_count vm.stats.vm.v_wire_count vm.stats.vm.v_active_count vm.stats.vm.v_inactive_count vm.stats.vm.v_cache_count vm.stats.vm.v_free_count vm.stats.vm.v_page_size', function (error, stdout) {
|
||||
if (!error) {
|
||||
let lines = stdout.toString().split('\n');
|
||||
const pagesize = parseInt(util.getValue(lines, 'vm.stats.vm.v_page_size'), 10);
|
||||
const inactive = parseInt(util.getValue(lines, 'vm.stats.vm.v_inactive_count'), 10) * pagesize;
|
||||
const cache = parseInt(util.getValue(lines, 'vm.stats.vm.v_cache_count'), 10) * pagesize;
|
||||
|
||||
result.total = parseInt(util.getValue(lines, 'hw.realmem'), 10);
|
||||
if (isNaN(result.total)) { result.total = parseInt(util.getValue(lines, 'hw.physmem'), 10); }
|
||||
result.free = parseInt(util.getValue(lines, 'vm.stats.vm.v_free_count'), 10) * pagesize;
|
||||
result.buffcache = inactive + cache;
|
||||
result.available = result.buffcache + result.free;
|
||||
result.active = result.total - result.free - result.buffcache;
|
||||
result.total = parseInt(util.getValue(lines, 'hw.realmem'), 10);
|
||||
if (isNaN(result.total)) { result.total = parseInt(util.getValue(lines, 'hw.physmem'), 10); }
|
||||
result.free = parseInt(util.getValue(lines, 'vm.stats.vm.v_free_count'), 10) * pagesize;
|
||||
result.buffcache = inactive + cache;
|
||||
result.available = result.buffcache + result.free;
|
||||
result.active = result.total - result.free - result.buffcache;
|
||||
|
||||
result.swaptotal = 0;
|
||||
result.swapfree = 0;
|
||||
result.swapused = 0;
|
||||
result.swaptotal = 0;
|
||||
result.swapfree = 0;
|
||||
result.swapused = 0;
|
||||
|
||||
}
|
||||
}
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
});
|
||||
} catch (e) {
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
});
|
||||
}
|
||||
}
|
||||
if (_sunos) {
|
||||
if (callback) { callback(result); }
|
||||
@@ -233,31 +243,36 @@ function mem(callback) {
|
||||
} catch (e) {
|
||||
util.noop();
|
||||
}
|
||||
exec('vm_stat 2>/dev/null | grep "Pages active"', function (error, stdout) {
|
||||
if (!error) {
|
||||
let lines = stdout.toString().split('\n');
|
||||
|
||||
result.active = parseInt(lines[0].split(':')[1], 10) * pageSize;
|
||||
result.buffcache = result.used - result.active;
|
||||
result.available = result.free + result.buffcache;
|
||||
}
|
||||
exec('sysctl -n vm.swapusage 2>/dev/null', function (error, stdout) {
|
||||
try {
|
||||
exec('vm_stat 2>/dev/null | grep "Pages active"', function (error, stdout) {
|
||||
if (!error) {
|
||||
let lines = stdout.toString().split('\n');
|
||||
if (lines.length > 0) {
|
||||
let firstline = lines[0].replace(/,/g, '.').replace(/M/g, '');
|
||||
let lineArray = firstline.trim().split(' ');
|
||||
lineArray.forEach(line => {
|
||||
if (line.toLowerCase().indexOf('total') !== -1) { result.swaptotal = parseFloat(line.split('=')[1].trim()) * 1024 * 1024; }
|
||||
if (line.toLowerCase().indexOf('used') !== -1) { result.swapused = parseFloat(line.split('=')[1].trim()) * 1024 * 1024; }
|
||||
if (line.toLowerCase().indexOf('free') !== -1) { result.swapfree = parseFloat(line.split('=')[1].trim()) * 1024 * 1024; }
|
||||
});
|
||||
}
|
||||
|
||||
result.active = parseInt(lines[0].split(':')[1], 10) * pageSize;
|
||||
result.buffcache = result.used - result.active;
|
||||
result.available = result.free + result.buffcache;
|
||||
}
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
exec('sysctl -n vm.swapusage 2>/dev/null', function (error, stdout) {
|
||||
if (!error) {
|
||||
let lines = stdout.toString().split('\n');
|
||||
if (lines.length > 0) {
|
||||
let firstline = lines[0].replace(/,/g, '.').replace(/M/g, '');
|
||||
let lineArray = firstline.trim().split(' ');
|
||||
lineArray.forEach(line => {
|
||||
if (line.toLowerCase().indexOf('total') !== -1) { result.swaptotal = parseFloat(line.split('=')[1].trim()) * 1024 * 1024; }
|
||||
if (line.toLowerCase().indexOf('used') !== -1) { result.swapused = parseFloat(line.split('=')[1].trim()) * 1024 * 1024; }
|
||||
if (line.toLowerCase().indexOf('free') !== -1) { result.swapfree = parseFloat(line.split('=')[1].trim()) * 1024 * 1024; }
|
||||
});
|
||||
}
|
||||
}
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
});
|
||||
});
|
||||
});
|
||||
} catch (e) {
|
||||
if (callback) { callback(result); }
|
||||
resolve(result);
|
||||
}
|
||||
}
|
||||
if (_windows) {
|
||||
let swaptotal = 0;
|
||||
|
||||
+3
-2
@@ -399,10 +399,11 @@ function bios(callback) {
|
||||
}
|
||||
if (_windows) {
|
||||
try {
|
||||
util.powerShell('Get-CimInstance Win32_bios | select Description,Version,Manufacturer,@{n="ReleaseDate";e={$_.ReleaseDate.ToString("yyyy-MM-dd")}},BuildNumber,SerialNumber | fl').then((stdout, error) => {
|
||||
util.powerShell('Get-CimInstance Win32_bios | select Description,Version,Manufacturer,@{n="ReleaseDate";e={$_.ReleaseDate.ToString("yyyy-MM-dd")}},BuildNumber,SerialNumber,SMBIOSBIOSVersion | fl').then((stdout, error) => {
|
||||
if (!error) {
|
||||
let lines = stdout.toString().split('\r\n');
|
||||
const description = util.getValue(lines, 'description', ':');
|
||||
const version = util.getValue(lines, 'SMBIOSBIOSVersion', ':');
|
||||
if (description.indexOf(' Version ') !== -1) {
|
||||
// ... Phoenix ROM BIOS PLUS Version 1.10 A04
|
||||
result.vendor = description.split(' Version ')[0].trim();
|
||||
@@ -413,7 +414,7 @@ function bios(callback) {
|
||||
result.version = description.split(' Ver: ')[1].trim();
|
||||
} else {
|
||||
result.vendor = util.getValue(lines, 'manufacturer', ':');
|
||||
result.version = util.getValue(lines, 'version', ':');
|
||||
result.version = version || util.getValue(lines, 'version', ':');
|
||||
}
|
||||
result.releaseDate = util.getValue(lines, 'releasedate', ':');
|
||||
result.revision = util.getValue(lines, 'buildnumber', ':');
|
||||
|
||||
Reference in New Issue
Block a user