83 lines
1.6 KiB
JavaScript
83 lines
1.6 KiB
JavaScript
var os = require('os');
|
|
|
|
/**
|
|
* System states
|
|
* @type {{hostname: *, platform: *, arch: *, release: *, cpus, uptime, memory}}
|
|
*/
|
|
var stat = module.exports = {
|
|
/**
|
|
* Hostname, e.g.: localhost, TjatseMacProBook.local...
|
|
*/
|
|
hostname: os.hostname(),
|
|
/**
|
|
* Platform, e.g.: darwin, win32, linux...
|
|
*/
|
|
platform: os.platform(),
|
|
/**
|
|
* Architecture, e.g.: 64, 32...
|
|
*/
|
|
arch: os.arch(),
|
|
/**
|
|
* Ver number of system.
|
|
*/
|
|
release: os.release(),
|
|
/**
|
|
* List all CPUs.
|
|
* @returns {*}
|
|
*/
|
|
get cpus() {
|
|
return os.cpus();
|
|
},
|
|
/**
|
|
* Uptime.
|
|
* @returns {*}
|
|
*/
|
|
get uptime() {
|
|
return os.uptime();
|
|
},
|
|
/**
|
|
* System memory usage.
|
|
* @returns {{free: *, total: *, percentage: number}}
|
|
*/
|
|
get memory() {
|
|
return {
|
|
free: os.freemem(),
|
|
total: os.totalmem(),
|
|
percentage: Math.round(100 * (1 - os.freemem() / os.totalmem()))
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* System CPU usage percentage (total).
|
|
* @param fn
|
|
* @param context
|
|
*/
|
|
stat.cpuUsage = function (fn, context) {
|
|
setTimeout(function (ctx, stat1) {
|
|
var stat2 = ctx.cpuInfo(),
|
|
perc = 100 * (1 - (stat2.idle - stat1.idle) / (stat2.total - stat1.total));
|
|
fn.call(context, perc.toFixed(2));
|
|
}, 1000, this, this.cpuInfo());
|
|
};
|
|
|
|
/**
|
|
* System CPU usage detail information.
|
|
* @returns {{idle: number, total: number}}
|
|
*/
|
|
stat.cpuInfo = function () {
|
|
var cpus = this.cpus,
|
|
idle = 0,
|
|
total = 0;
|
|
for (var i in cpus) {
|
|
idle += cpus[i].times.idle;
|
|
for (var k in cpus[i].times) {
|
|
total += cpus[i].times[k];
|
|
}
|
|
}
|
|
return {
|
|
'idle': idle,
|
|
'total': total
|
|
};
|
|
};
|