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 |
|
| 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.12 | 2023-08-05 | `fsSize()` rw /snap/ issue fixed (linux) |
|
||||||
| 5.18.11 | 2023-08-04 | `bluetooth()` improved parsing, macOS Sonoma detection |
|
| 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) |
|
| 5.18.10 | 2023-07-28 | `cpu()` fixed cache sizes, extended sockets (windows) |
|
||||||
|
|||||||
@ -57,6 +57,11 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<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>
|
<tr>
|
||||||
<th scope="row">5.18.12</th>
|
<th scope="row">5.18.12</th>
|
||||||
<td>2023-08-05</td>
|
<td>2023-08-05</td>
|
||||||
|
|||||||
@ -170,7 +170,7 @@
|
|||||||
<img class="logo" src="assets/logo.png" alt="logo">
|
<img class="logo" src="assets/logo.png" alt="logo">
|
||||||
<div class="title">systeminformation</div>
|
<div class="title">systeminformation</div>
|
||||||
<div class="subtitle"><span id="typed"></span> </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>
|
<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>
|
||||||
<div class="down">
|
<div class="down">
|
||||||
|
|||||||
141
lib/memory.js
141
lib/memory.js
@ -166,60 +166,70 @@ function mem(callback) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (_linux) {
|
if (_linux) {
|
||||||
fs.readFile('/proc/meminfo', function (error, stdout) {
|
try {
|
||||||
if (!error) {
|
fs.readFile('/proc/meminfo', function (error, stdout) {
|
||||||
const lines = stdout.toString().split('\n');
|
if (!error) {
|
||||||
result.total = parseInt(util.getValue(lines, 'memtotal'), 10);
|
const lines = stdout.toString().split('\n');
|
||||||
result.total = result.total ? result.total * 1024 : os.totalmem();
|
result.total = parseInt(util.getValue(lines, 'memtotal'), 10);
|
||||||
result.free = parseInt(util.getValue(lines, 'memfree'), 10);
|
result.total = result.total ? result.total * 1024 : os.totalmem();
|
||||||
result.free = result.free ? result.free * 1024 : os.freemem();
|
result.free = parseInt(util.getValue(lines, 'memfree'), 10);
|
||||||
result.used = result.total - result.free;
|
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 = parseInt(util.getValue(lines, 'buffers'), 10);
|
||||||
result.buffers = result.buffers ? result.buffers * 1024 : 0;
|
result.buffers = result.buffers ? result.buffers * 1024 : 0;
|
||||||
result.cached = parseInt(util.getValue(lines, 'cached'), 10);
|
result.cached = parseInt(util.getValue(lines, 'cached'), 10);
|
||||||
result.cached = result.cached ? result.cached * 1024 : 0;
|
result.cached = result.cached ? result.cached * 1024 : 0;
|
||||||
result.slab = parseInt(util.getValue(lines, 'slab'), 10);
|
result.slab = parseInt(util.getValue(lines, 'slab'), 10);
|
||||||
result.slab = result.slab ? result.slab * 1024 : 0;
|
result.slab = result.slab ? result.slab * 1024 : 0;
|
||||||
result.buffcache = result.buffers + result.cached + result.slab;
|
result.buffcache = result.buffers + result.cached + result.slab;
|
||||||
|
|
||||||
let available = parseInt(util.getValue(lines, 'memavailable'), 10);
|
let available = parseInt(util.getValue(lines, 'memavailable'), 10);
|
||||||
result.available = available ? available * 1024 : result.free + result.buffcache;
|
result.available = available ? available * 1024 : result.free + result.buffcache;
|
||||||
result.active = result.total - result.available;
|
result.active = result.total - result.available;
|
||||||
|
|
||||||
result.swaptotal = parseInt(util.getValue(lines, 'swaptotal'), 10);
|
result.swaptotal = parseInt(util.getValue(lines, 'swaptotal'), 10);
|
||||||
result.swaptotal = result.swaptotal ? result.swaptotal * 1024 : 0;
|
result.swaptotal = result.swaptotal ? result.swaptotal * 1024 : 0;
|
||||||
result.swapfree = parseInt(util.getValue(lines, 'swapfree'), 10);
|
result.swapfree = parseInt(util.getValue(lines, 'swapfree'), 10);
|
||||||
result.swapfree = result.swapfree ? result.swapfree * 1024 : 0;
|
result.swapfree = result.swapfree ? result.swapfree * 1024 : 0;
|
||||||
result.swapused = result.swaptotal - result.swapfree;
|
result.swapused = result.swaptotal - result.swapfree;
|
||||||
}
|
}
|
||||||
|
if (callback) { callback(result); }
|
||||||
|
resolve(result);
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
if (callback) { callback(result); }
|
if (callback) { callback(result); }
|
||||||
resolve(result);
|
resolve(result);
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
if (_freebsd || _openbsd || _netbsd) {
|
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) {
|
try {
|
||||||
if (!error) {
|
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) {
|
||||||
let lines = stdout.toString().split('\n');
|
if (!error) {
|
||||||
const pagesize = parseInt(util.getValue(lines, 'vm.stats.vm.v_page_size'), 10);
|
let lines = stdout.toString().split('\n');
|
||||||
const inactive = parseInt(util.getValue(lines, 'vm.stats.vm.v_inactive_count'), 10) * pagesize;
|
const pagesize = parseInt(util.getValue(lines, 'vm.stats.vm.v_page_size'), 10);
|
||||||
const cache = parseInt(util.getValue(lines, 'vm.stats.vm.v_cache_count'), 10) * pagesize;
|
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);
|
result.total = parseInt(util.getValue(lines, 'hw.realmem'), 10);
|
||||||
if (isNaN(result.total)) { result.total = parseInt(util.getValue(lines, 'hw.physmem'), 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.free = parseInt(util.getValue(lines, 'vm.stats.vm.v_free_count'), 10) * pagesize;
|
||||||
result.buffcache = inactive + cache;
|
result.buffcache = inactive + cache;
|
||||||
result.available = result.buffcache + result.free;
|
result.available = result.buffcache + result.free;
|
||||||
result.active = result.total - result.free - result.buffcache;
|
result.active = result.total - result.free - result.buffcache;
|
||||||
|
|
||||||
result.swaptotal = 0;
|
result.swaptotal = 0;
|
||||||
result.swapfree = 0;
|
result.swapfree = 0;
|
||||||
result.swapused = 0;
|
result.swapused = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (callback) { callback(result); }
|
||||||
|
resolve(result);
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
if (callback) { callback(result); }
|
if (callback) { callback(result); }
|
||||||
resolve(result);
|
resolve(result);
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
if (_sunos) {
|
if (_sunos) {
|
||||||
if (callback) { callback(result); }
|
if (callback) { callback(result); }
|
||||||
@ -233,31 +243,36 @@ function mem(callback) {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
util.noop();
|
util.noop();
|
||||||
}
|
}
|
||||||
exec('vm_stat 2>/dev/null | grep "Pages active"', function (error, stdout) {
|
try {
|
||||||
if (!error) {
|
exec('vm_stat 2>/dev/null | grep "Pages active"', function (error, stdout) {
|
||||||
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) {
|
|
||||||
if (!error) {
|
if (!error) {
|
||||||
let lines = stdout.toString().split('\n');
|
let lines = stdout.toString().split('\n');
|
||||||
if (lines.length > 0) {
|
|
||||||
let firstline = lines[0].replace(/,/g, '.').replace(/M/g, '');
|
result.active = parseInt(lines[0].split(':')[1], 10) * pageSize;
|
||||||
let lineArray = firstline.trim().split(' ');
|
result.buffcache = result.used - result.active;
|
||||||
lineArray.forEach(line => {
|
result.available = result.free + result.buffcache;
|
||||||
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); }
|
exec('sysctl -n vm.swapusage 2>/dev/null', function (error, stdout) {
|
||||||
resolve(result);
|
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) {
|
if (_windows) {
|
||||||
let swaptotal = 0;
|
let swaptotal = 0;
|
||||||
|
|||||||
@ -399,10 +399,11 @@ function bios(callback) {
|
|||||||
}
|
}
|
||||||
if (_windows) {
|
if (_windows) {
|
||||||
try {
|
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) {
|
if (!error) {
|
||||||
let lines = stdout.toString().split('\r\n');
|
let lines = stdout.toString().split('\r\n');
|
||||||
const description = util.getValue(lines, 'description', ':');
|
const description = util.getValue(lines, 'description', ':');
|
||||||
|
const version = util.getValue(lines, 'SMBIOSBIOSVersion', ':');
|
||||||
if (description.indexOf(' Version ') !== -1) {
|
if (description.indexOf(' Version ') !== -1) {
|
||||||
// ... Phoenix ROM BIOS PLUS Version 1.10 A04
|
// ... Phoenix ROM BIOS PLUS Version 1.10 A04
|
||||||
result.vendor = description.split(' Version ')[0].trim();
|
result.vendor = description.split(' Version ')[0].trim();
|
||||||
@ -413,7 +414,7 @@ function bios(callback) {
|
|||||||
result.version = description.split(' Ver: ')[1].trim();
|
result.version = description.split(' Ver: ')[1].trim();
|
||||||
} else {
|
} else {
|
||||||
result.vendor = util.getValue(lines, 'manufacturer', ':');
|
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.releaseDate = util.getValue(lines, 'releasedate', ':');
|
||||||
result.revision = util.getValue(lines, 'buildnumber', ':');
|
result.revision = util.getValue(lines, 'buildnumber', ':');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user