2015-11-07 68 views
1

如何獲取當前正在運行的進程在我的節點服務器上?我嘗試使用ps-node(https://www.npmjs.com/package/ps-node),但未能獲取列表。Node.js獲取所有正在運行的進程

我在C#中尋找類似下面的命令:

// Get all processes running on the local computer. 
Process[] localAll = Process.GetProcesses(); 

這可能嗎?

+0

你在找pid嗎? – ftabaro

+0

@Freakinator pid和名稱 –

+0

從命令行,我們使用[forever](https://github.com/foreverjs/forever)工具。 從服務器內部我會做一些奇特的事情(比如產生一個子進程,它從永遠的輸出中獲取pid和名稱,並在節點實例中收集結果),但我不確定是否要這樣做。 .. – ftabaro

回答

1

下面是使用上述forever工具,GNU awk和內置child_process節點庫中的一個例子:

var spawn = require('child_process').spawn, 
    forever = spawn('forever', ['list', '--plain']), 
    awk = spawn('awk', ['NR>2{print $4,$5,$6,$7,"\t",$9}']); 

forever.stdout.on('data', function (data) { 
    awk.stdin.write(data); 
}); 

forever.stderr.on('data', function (data) { 
    console.log('forever stderr: ' + data); 
}); 

forever.on('close', function (code) { 
    if (code !== 0) { 
    console.log('forever process exited with code ' + code); 
    } 
    awk.stdin.end(); 
}); 

awk.stdout.on('data', function (data) { 
    // data is your result as Buffer 
    // print data as string 
    console.log('' + data); 
}); 

awk.stderr.on('data', function (data) { 
    console.log('awk stderr: ' + data); 
}); 

awk.on('close', function (code) { 
    if (code !== 0) { 
    console.log('awk process exited with code ' + code); 
    } 
}); 

這裏發生的事情,主要是:

$ forever list --plain | awk '{NR>2{print $4,$5,$6,$7,"\t",$9}}' 

當然, awk打印的變量取決於forever list的輸出......爲了測試正確的解決方案,我將從打印$0開始獲取整個輸出,然後進行修剪,使其僅報告通知您需要的。

相關問題