2014-03-06 71 views
1

我正在尋找一種獲取任何進程運行的進程內存的方式。Nodejs/Javascript獲取進程內存的任何進程

我在做一個web應用程序。我有一個服務器(通過Nodejs),我的文件app.js和一個代理通過服務器向app.js發送信息。

我想找到一種方法來獲取任何進程的進程內存(以便將此信息發送給代理)? 你有什麼想法我可以做到這一點?我已搜查谷歌,但我還沒有找到我的答案:/

謝謝

PS:我需要一個Windows兼容的解決方案:)

+0

是否需要任何進程或任何* node *進程的內存使用情況? – loganfsmyth

+0

我想要任何進程的內存使用情況 – WellWellWell

+0

您想要進程內存*大小*還是實際數據? – Bergi

回答

1

的Windows

對於windows ,使用tasklist代替ps

在這個例子中在下面,我使用了ps unix程序,所以它不是Windows兼容的。

這裏,%MEM是每個finalProcess迭代的第4個元素。

Windows%MEM是第5個元素。

var myFunction = function(processList) { 
    // here, your code 
}; 

var parseProcess = function(err, process, stderr) { 
    var process = (process.split("\n")), 
     finalProcess = []; 

    // 1st line is a tab descriptor 
    // if Windows, i should start to 2 
    for (var i = 1; i < process.length; i++) { 
     finalProcess.push(cleanArray(process[i].split(" "))); 
    } 

    console.log(finalProcess); 
    // callback to another function 
    myFunction(finalProcess); 
}; 

var getProcessList = function() { 

    var exec = require('child_process').exec; 
    exec('ps aux', parseProcess.bind(this)); 
} 

// thx http://stackoverflow.com/questions/281264/remove-empty-elements-from-an-array-in-javascript 
function cleanArray(actual){ 
    var newArray = new Array(); 
    for(var i = 0; i<actual.length; i++){ 
     if (actual[i]){ 
     newArray.push(actual[i]); 
    } 
    } 
    return newArray; 
} 


getProcessList(); 
+0

ARF,我應該有指定我正在與Windows 但謝謝你的回答,我希望它會幫助其他人:) – WellWellWell

+0

更新的答案,它應該在Windows上使用這個小修復使用'tasklist'而不是'ps')。 –

+0

它實際上工作(我做了一些愚蠢的嗡嗡聲......):D非常感謝! – WellWellWell