@znode/os-usage
Version:
os cpu/memory/disk usage
46 lines (45 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.disk = void 0;
const execa_1 = require("@znode/execa");
async function disk() {
const response = await execa_1.default `df -k`;
const devices = {};
const combined = response
.split('\n')
.filter((e) => /^\/dev\//.test(e))
.map((e) => e.split(/\s+/))
.map((e) => ({
device: e[0],
total: +e[1],
used: +e[2],
available: +e[3],
usedPercent: e[4],
mountPath: e[5],
}))
// filter the same devices in docker
.filter((e) => {
if (!devices[e.device]) {
devices[e.device] = true;
return true;
}
return false;
})
.reduce((all, one) => {
all.total += one.total;
all.used += +one.used;
return all;
}, { total: 0, used: 0 });
const total = toG(combined.total);
const used = toG(combined.used);
return {
total,
used,
percent: ~~((used / total) * 100),
};
}
exports.disk = disk;
function toG(value) {
// return value >> 20; // maybe cause error
return ~~(value / 1024 ** 2);
}