mem() fixed error handling
This commit is contained in:
parent
9ada69c835
commit
2c396c0582
@ -82,6 +82,7 @@ For major (breaking) changes - **version 4, 3 and 2** - see end of page.
|
||||
|
||||
| Version | Date | Comment |
|
||||
| ------- | ---------- | --------------------------------------------------------------------------------------------------- |
|
||||
| 5.18.13 | 2023-08-08 | `mem()` fixed error handling |
|
||||
| 5.18.12 | 2023-08-05 | `fsSize()` rw /snap/ issue fixed (linux) |
|
||||
| 5.18.11 | 2023-08-04 | `bluetooth()` improved parsing, macOS Sonoma detection |
|
||||
| 5.18.10 | 2023-07-28 | `cpu()` fixed cache sizes, extended sockets (windows) |
|
||||
|
||||
@ -57,6 +57,11 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">5.18.13</th>
|
||||
<td>2023-08-08</td>
|
||||
<td><span class="code">mem()</span> fixed error handling</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">5.18.12</th>
|
||||
<td>2023-08-05</td>
|
||||
|
||||
@ -170,7 +170,7 @@
|
||||
<img class="logo" src="assets/logo.png" alt="logo">
|
||||
<div class="title">systeminformation</div>
|
||||
<div class="subtitle"><span id="typed"></span> </div>
|
||||
<div class="version">New Version: <span id="version">5.18.12</span></div>
|
||||
<div class="version">New Version: <span id="version">5.18.13</span></div>
|
||||
<button class="btn btn-light" onclick="location.href='https://github.com/sebhildebrandt/systeminformation'">View on Github <i class=" fab fa-github"></i></button>
|
||||
</div>
|
||||
<div class="down">
|
||||
|
||||
141
lib/memory.js
141
lib/memory.js
@ -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;
|
||||
|
||||
@ -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', ':');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user