fsSize() added rw (win, linux, mac OS, BSD)
This commit is contained in:
parent
f716acdf55
commit
0038afdd5e
@ -82,6 +82,7 @@ For major (breaking) changes - **version 4, 3 and 2** - see end of page.
|
|||||||
|
|
||||||
| Version | Date | Comment |
|
| Version | Date | Comment |
|
||||||
| ------- | ---------- | --------------------------------------------------------------------------------------------------- |
|
| ------- | ---------- | --------------------------------------------------------------------------------------------------- |
|
||||||
|
| 5.16.0 | 2022-12-01 | `fsSize()` added rw (win, linux, mac OS, BSD) |
|
||||||
| 5.15.1 | 2022-11-29 | fix typescript typings |
|
| 5.15.1 | 2022-11-29 | fix typescript typings |
|
||||||
| 5.15.0 | 2022-11-29 | `blockDevices()` added device (win, linux, mac OS) |
|
| 5.15.0 | 2022-11-29 | `blockDevices()` added device (win, linux, mac OS) |
|
||||||
| 5.14.4 | 2022-11-21 | `osInfo()` improved uefi parsing (FreeBSD) |
|
| 5.14.4 | 2022-11-21 | `osInfo()` improved uefi parsing (FreeBSD) |
|
||||||
|
|||||||
@ -112,6 +112,8 @@ si.cpu()
|
|||||||
|
|
||||||
(last 7 major and minor version releases)
|
(last 7 major and minor version releases)
|
||||||
|
|
||||||
|
- Version 5.16.0: `fsSize()` added rw property
|
||||||
|
- Version 5.15.0: `blockDevices()` added device
|
||||||
- Version 5.14.0: `blockDevices()` added raid group member (linux)
|
- Version 5.14.0: `blockDevices()` added raid group member (linux)
|
||||||
- Version 5.13.0: `networkConnections()` added process name (mac OS)
|
- Version 5.13.0: `networkConnections()` added process name (mac OS)
|
||||||
- Version 5.12.0: `cpu()` added performance and efficiency cores
|
- Version 5.12.0: `cpu()` added performance and efficiency cores
|
||||||
@ -489,6 +491,7 @@ Full function reference with examples can be found at [https://systeminformation
|
|||||||
| | [0].available | X | X | X | X | | used in bytes |
|
| | [0].available | X | X | X | X | | used in bytes |
|
||||||
| | [0].use | X | X | X | X | | used in % |
|
| | [0].use | X | X | X | X | | used in % |
|
||||||
| | [0].mount | X | X | X | X | | mount point |
|
| | [0].mount | X | X | X | X | | mount point |
|
||||||
|
| | [0].rw | X | X | X | X | | read and write (false if read only) |
|
||||||
| si.fsOpenFiles(cb) | {...} | X | X | X | | | count max/allocated file descriptors |
|
| si.fsOpenFiles(cb) | {...} | X | X | X | | | count max/allocated file descriptors |
|
||||||
| | max | X | X | X | | | max file descriptors |
|
| | max | X | X | X | | | max file descriptors |
|
||||||
| | allocated | X | X | X | | | current open files count |
|
| | allocated | X | X | X | | | current open files count |
|
||||||
|
|||||||
@ -742,6 +742,16 @@ setInterval(function() {
|
|||||||
<td></td>
|
<td></td>
|
||||||
<td>mount point</td>
|
<td>mount point</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>[0].rw</td>
|
||||||
|
<td>X</td>
|
||||||
|
<td>X</td>
|
||||||
|
<td>X</td>
|
||||||
|
<td>X</td>
|
||||||
|
<td></td>
|
||||||
|
<td>Read/Write (false if read only)</td>
|
||||||
|
</tr>
|
||||||
<tr class="example">
|
<tr class="example">
|
||||||
<td></td>
|
<td></td>
|
||||||
<td colspan="7">
|
<td colspan="7">
|
||||||
@ -757,7 +767,8 @@ si.fsSize().then(data => console.log(data));</code></pre class="example">
|
|||||||
used: 59142635520,
|
used: 59142635520,
|
||||||
available: 913434726400,
|
available: 913434726400,
|
||||||
use: 6.08,
|
use: 6.08,
|
||||||
mount: '/'
|
mount: '/',
|
||||||
|
rw: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
...
|
...
|
||||||
@ -1000,4 +1011,4 @@ setInterval(function() {
|
|||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -57,6 +57,11 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">5.16.0</th>
|
||||||
|
<td>2022-12-01</td>
|
||||||
|
<td><span class="code">fsSize()</span> added rw attribute (win, linux, mac OS, BSD)</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">5.15.1</th>
|
<th scope="row">5.15.1</th>
|
||||||
<td>2022-11-29</td>
|
<td>2022-11-29</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.15.1</span></div>
|
<div class="version">New Version: <span id="version">5.16.0</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">
|
||||||
@ -206,7 +206,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row number-section">
|
<div class="row number-section">
|
||||||
<div class="col-xl-4 col-lg-4 col-md-4 col-12">
|
<div class="col-xl-4 col-lg-4 col-md-4 col-12">
|
||||||
<div class="numbers">15,211</div>
|
<div class="numbers">15,381</div>
|
||||||
<div class="title">Lines of code</div>
|
<div class="title">Lines of code</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xl-4 col-lg-4 col-md-4 col-12">
|
<div class="col-xl-4 col-lg-4 col-md-4 col-12">
|
||||||
|
|||||||
@ -39,6 +39,7 @@ let _disk_io = {};
|
|||||||
function fsSize(callback) {
|
function fsSize(callback) {
|
||||||
|
|
||||||
let macOsDisks = [];
|
let macOsDisks = [];
|
||||||
|
let osMounts = [];
|
||||||
|
|
||||||
function getmacOsFsType(fs) {
|
function getmacOsFsType(fs) {
|
||||||
if (!fs.startsWith('/')) { return 'NFS'; }
|
if (!fs.startsWith('/')) { return 'NFS'; }
|
||||||
@ -86,6 +87,7 @@ function fsSize(callback) {
|
|||||||
const used = parseInt(((_linux || _freebsd || _openbsd || _netbsd) ? line[3] : line[2])) * 1024;
|
const used = parseInt(((_linux || _freebsd || _openbsd || _netbsd) ? line[3] : line[2])) * 1024;
|
||||||
const available = parseInt(((_linux || _freebsd || _openbsd || _netbsd) ? line[4] : line[3])) * 1024;
|
const available = parseInt(((_linux || _freebsd || _openbsd || _netbsd) ? line[4] : line[3])) * 1024;
|
||||||
const use = parseFloat((100.0 * (used / (used + available))).toFixed(2));
|
const use = parseFloat((100.0 * (used / (used + available))).toFixed(2));
|
||||||
|
let rw = _darwin && osMounts && Object.keys(osMounts).length > 0 ? osMounts[fs] || false : null;
|
||||||
line.splice(0, (_linux || _freebsd || _openbsd || _netbsd) ? 6 : 5);
|
line.splice(0, (_linux || _freebsd || _openbsd || _netbsd) ? 6 : 5);
|
||||||
const mount = line.join(' ');
|
const mount = line.join(' ');
|
||||||
if (!data.find(el => (el.fs === fs && el.type === fsType))) {
|
if (!data.find(el => (el.fs === fs && el.type === fsType))) {
|
||||||
@ -96,7 +98,8 @@ function fsSize(callback) {
|
|||||||
used,
|
used,
|
||||||
available,
|
available,
|
||||||
use,
|
use,
|
||||||
mount
|
mount,
|
||||||
|
rw
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -110,18 +113,37 @@ function fsSize(callback) {
|
|||||||
let data = [];
|
let data = [];
|
||||||
if (_linux || _freebsd || _openbsd || _netbsd || _darwin) {
|
if (_linux || _freebsd || _openbsd || _netbsd || _darwin) {
|
||||||
let cmd = '';
|
let cmd = '';
|
||||||
|
macOsDisks = [];
|
||||||
|
osMounts = {};
|
||||||
if (_darwin) {
|
if (_darwin) {
|
||||||
cmd = 'df -kP';
|
cmd = 'df -kP';
|
||||||
try {
|
try {
|
||||||
macOsDisks = execSync('diskutil list').toString().split('\n').filter(line => {
|
macOsDisks = execSync('diskutil list').toString().split('\n').filter(line => {
|
||||||
return !line.startsWith('/') && line.indexOf(':') > 0;
|
return !line.startsWith('/') && line.indexOf(':') > 0;
|
||||||
});
|
});
|
||||||
|
execSync('mount').toString().split('\n').filter(line => {
|
||||||
|
return line.startsWith('/');
|
||||||
|
}).forEach((line) => {
|
||||||
|
osMounts[line.split(' ')[0]] = line.toLowerCase().indexOf('read-only') === -1;
|
||||||
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
macOsDisks = [];
|
util.noop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_linux) { cmd = 'df -lkPTx squashfs'; }
|
if (_linux) {
|
||||||
if (_freebsd || _openbsd || _netbsd) { cmd = 'df -lkPT'; }
|
cmd = 'df -lkPTx squashfs';
|
||||||
|
execSync('cat /proc/mounts').toString().split('\n').filter(line => {
|
||||||
|
return line.startsWith('/');
|
||||||
|
}).forEach((line) => {
|
||||||
|
osMounts[line.split(' ')[0]] = line.toLowerCase().indexOf('rw') >= 0;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (_freebsd || _openbsd || _netbsd) {
|
||||||
|
cmd = 'df -lkPT';
|
||||||
|
execSync('mount').toString().split('\n').forEach((line) => {
|
||||||
|
osMounts[line.split(' ')[0]] = line.toLowerCase().indexOf('read-only') === -1;
|
||||||
|
});
|
||||||
|
}
|
||||||
exec(cmd, { maxBuffer: 1024 * 1024 }, function (error, stdout) {
|
exec(cmd, { maxBuffer: 1024 * 1024 }, function (error, stdout) {
|
||||||
let lines = filterLines(stdout);
|
let lines = filterLines(stdout);
|
||||||
data = parseDf(lines);
|
data = parseDf(lines);
|
||||||
@ -151,7 +173,7 @@ function fsSize(callback) {
|
|||||||
if (_windows) {
|
if (_windows) {
|
||||||
try {
|
try {
|
||||||
// util.wmic('logicaldisk get Caption,FileSystem,FreeSpace,Size').then((stdout) => {
|
// util.wmic('logicaldisk get Caption,FileSystem,FreeSpace,Size').then((stdout) => {
|
||||||
util.powerShell('Get-CimInstance Win32_logicaldisk | select Caption,FileSystem,FreeSpace,Size | fl').then((stdout, error) => {
|
util.powerShell('Get-CimInstance Win32_logicaldisk | select Access,Caption,FileSystem,FreeSpace,Size | fl').then((stdout, error) => {
|
||||||
if (!error) {
|
if (!error) {
|
||||||
let devices = stdout.toString().split(/\n\s*\n/);
|
let devices = stdout.toString().split(/\n\s*\n/);
|
||||||
devices.forEach(function (device) {
|
devices.forEach(function (device) {
|
||||||
@ -159,6 +181,8 @@ function fsSize(callback) {
|
|||||||
const size = util.toInt(util.getValue(lines, 'size', ':'));
|
const size = util.toInt(util.getValue(lines, 'size', ':'));
|
||||||
const free = util.toInt(util.getValue(lines, 'freespace', ':'));
|
const free = util.toInt(util.getValue(lines, 'freespace', ':'));
|
||||||
const caption = util.getValue(lines, 'caption', ':');
|
const caption = util.getValue(lines, 'caption', ':');
|
||||||
|
const rwValue = util.getValue(lines, 'access', ':');
|
||||||
|
const rw = rwValue ? (util.toInt(rwValue) !== 1) : null;
|
||||||
if (size) {
|
if (size) {
|
||||||
data.push({
|
data.push({
|
||||||
fs: caption,
|
fs: caption,
|
||||||
@ -167,7 +191,8 @@ function fsSize(callback) {
|
|||||||
used: size - free,
|
used: size - free,
|
||||||
available: free,
|
available: free,
|
||||||
use: parseFloat(((100.0 * (size - free)) / size).toFixed(2)),
|
use: parseFloat(((100.0 * (size - free)) / size).toFixed(2)),
|
||||||
mount: caption
|
mount: caption,
|
||||||
|
rw
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
1
lib/index.d.ts
vendored
1
lib/index.d.ts
vendored
@ -434,6 +434,7 @@ export namespace Systeminformation {
|
|||||||
available: number;
|
available: number;
|
||||||
use: number;
|
use: number;
|
||||||
mount: string;
|
mount: string;
|
||||||
|
rw: boolean | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface FsOpenFilesData {
|
interface FsOpenFilesData {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user