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 }; }