diff --git a/lib/processes.js b/lib/processes.js index a0d3103..b1f368c 100644 --- a/lib/processes.js +++ b/lib/processes.js @@ -902,8 +902,6 @@ function processLoad(proc, callback) { } let processes = processesString.split('|'); let result = []; - let dataProcesses = []; - let allProcesses = []; const procSanitized = util.isPrototypePolluted() ? '' : util.sanitizeShellString(proc); @@ -1106,11 +1104,15 @@ function processLoad(proc, callback) { } if (_linux) { // calc process_cpu - ps is not accurate in linux! + result.forEach(function (item) { + item.cpu = 0; + }) let cmd = 'cat /proc/stat | grep "cpu "'; - for (let i = 0; i < result.pids.length; i++) { - cmd += (';cat /proc/' + result.pids[i] + '/stat'); + for (let i in result) { + for (let j in result[i].pids) { + cmd += (';cat /proc/' + result[i].pids[j] + '/stat'); + } } - exec(cmd, { maxBuffer: 1024 * 20000 }, function (error, stdout) { let curr_processes = stdout.toString().split('\n'); @@ -1120,14 +1122,23 @@ function processLoad(proc, callback) { // process let list_new = {}; let resultProcess = {}; - result.cpu = 0; + for (let i = 0; i < curr_processes.length; i++) { resultProcess = calcProcStatLinux(curr_processes[i], all, _process_cpu); if (resultProcess.pid) { + // find result item + let resultItemId = -1; + for (let i in result) { + if (result[i].pids.indexOf(resultProcess.pid) >= 0) { + resultItemId = i; + } + } // store pcpu in outer result - result.cpu += resultProcess.cpuu + resultProcess.cpus; + if (resultItemId >= 0) { + result[resultItemId].cpu += resultProcess.cpuu + resultProcess.cpus; + } // save new values list_new[resultProcess.pid] = {