xVASynth / lib /osutils.js
Pendrokar's picture
xVASynth v3 code for English
19c8b95
raw
history blame
No virus
4.64 kB
var _os = require('os');
window.platform = function(){
return process.platform;
}
window.cpuCount = function(){
return _os.cpus().length;
}
window.sysUptime = function(){
//seconds
return _os.uptime();
}
window.processUptime = function(){
//seconds
return process.uptime();
}
// Memory
window.freemem = function(){
return _os.freemem() / ( 1024 * 1024 );
}
window.totalmem = function(){
return _os.totalmem() / ( 1024 * 1024 );
}
window.freememPercentage = function(){
return _os.freemem() / _os.totalmem();
}
window.freeCommand = function(callback){
// Only Linux
require('child_process').exec('free -m', function(error, stdout, stderr) {
var lines = stdout.split("\n");
var str_mem_info = lines[1].replace( /[\s\n\r]+/g,' ');
var mem_info = str_mem_info.split(' ')
total_mem = parseFloat(mem_info[1])
free_mem = parseFloat(mem_info[3])
buffers_mem = parseFloat(mem_info[5])
cached_mem = parseFloat(mem_info[6])
used_mem = total_mem - (free_mem + buffers_mem + cached_mem)
callback(used_mem -2);
});
}
// Hard Disk Drive
window.harddrive = function(callback){
require('child_process').exec('df -k', function(error, stdout, stderr) {
var total = 0;
var used = 0;
var free = 0;
var lines = stdout.split("\n");
var str_disk_info = lines[1].replace( /[\s\n\r]+/g,' ');
var disk_info = str_disk_info.split(' ');
total = Math.ceil((disk_info[1] * 1024)/ Math.pow(1024,2));
used = Math.ceil(disk_info[2] * 1024 / Math.pow(1024,2)) ;
free = Math.ceil(disk_info[3] * 1024 / Math.pow(1024,2)) ;
callback(total, free, used);
});
}
// Return process running current
window.getProcesses = function(nProcess, callback){
// if nprocess is undefined then is function
if(typeof nProcess === 'function'){
callback =nProcess;
nProcess = 0
}
command = 'ps -eo pcpu,pmem,time,args | sort -k 1 -r | head -n'+10
//command = 'ps aux | head -n '+ 11
//command = 'ps aux | head -n '+ (nProcess + 1)
if (nProcess > 0)
command = 'ps -eo pcpu,pmem,time,args | sort -k 1 -r | head -n'+(nProcess + 1)
require('child_process').exec(command, function(error, stdout, stderr) {
var that = this
var lines = stdout.split("\n");
lines.shift()
lines.pop()
var result = ''
lines.forEach(function(_item,_i){
var _str = _item.replace( /[\s\n\r]+/g,' ');
_str = _str.split(' ')
// result += _str[10]+" "+_str[9]+" "+_str[2]+" "+_str[3]+"\n"; // process
result += _str[1]+" "+_str[2]+" "+_str[3]+" "+_str[4].substring((_str[4].length - 25))+"\n"; // process
});
callback(result);
});
}
/*
* Returns All the load average usage for 1, 5 or 15 minutes.
*/
window.allLoadavg = function(){
var loads = _os.loadavg();
return loads[0].toFixed(4)+','+loads[1].toFixed(4)+','+loads[2].toFixed(4);
}
/*
* Returns the load average usage for 1, 5 or 15 minutes.
*/
window.loadavg = function(_time){
if(_time === undefined || (_time !== 5 && _time !== 15) ) _time = 1;
var loads = _os.loadavg();
var v = 0;
if(_time == 1) v = loads[0];
if(_time == 5) v = loads[1];
if(_time == 15) v = loads[2];
return v;
}
window.cpuFree = function(callback){
getCPUUsage(callback, true);
}
window.cpuUsage = function(callback){
getCPUUsage(callback, false);
}
function getCPUUsage(callback, free){
var stats1 = getCPUInfo();
var startIdle = stats1.idle;
var startTotal = stats1.total;
setTimeout(function() {
var stats2 = getCPUInfo();
var endIdle = stats2.idle;
var endTotal = stats2.total;
var idle = endIdle - startIdle;
var total = endTotal - startTotal;
var perc = idle / total;
if(free === true)
callback( perc );
else
callback( (1 - perc) );
}, 1000 );
}
function getCPUInfo(callback){
var cpus = _os.cpus();
var user = 0;
var nice = 0;
var sys = 0;
var idle = 0;
var irq = 0;
var total = 0;
for(var cpu in cpus){
if (!cpus.hasOwnProperty(cpu)) continue;
user += cpus[cpu].times.user;
nice += cpus[cpu].times.nice;
sys += cpus[cpu].times.sys;
irq += cpus[cpu].times.irq;
idle += cpus[cpu].times.idle;
}
var total = user + nice + sys + idle + irq;
return {
'idle': idle,
'total': total
};
}