2013-03-18 186 views
22

如何在Node.JS程序中使用PID(進程ID)獲取進程名稱,平臺包括Mac,Windows,Linux。NODEJS進程信息

它是否有一些節點模塊來做到這一點?

+2

http://nodejs.org/api/process .html只是'process.pid' – generalhenry 2013-03-18 07:24:09

+0

是不是這個API是唯一訪問PID我想要的額外信息是由PID得到的 – pianist829 2013-03-18 07:27:56

+2

程序還給你平臺,arch,內存使用情況,cwd等等。你要? – tjameson 2013-03-18 07:38:42

回答

28

是的,內置/核心模塊process做到這一點:

所以,只說var process = require('process');然後

爲了得到PID(進程ID):

if (process.pid) { 
    console.log('This process is your pid ' + process.pid); 
} 

要獲取平臺信息:

console.log('This platform is ' + process.platform); 

注:您只能瞭解子進程或父進程的PID。


根據您的要求更新。 (測試 WINDOWS

var exec = require('child_process').exec; 
var yourPID = '1444'; 

exec('tasklist', function(err, stdout, stderr) { 
    var lines = stdout.toString().split('\n'); 
    var results = new Array(); 
    lines.forEach(function(line) { 
     var parts = line.split('='); 
     parts.forEach(function(items){ 
     if(items.toString().indexOf(yourPID) > -1){ 
     console.log(items.toString().substring(0, items.toString().indexOf(yourPID))); 
     } 
     }) 
    }); 
}); 

Linux你可以嘗試這樣的:

var spawn = require('child_process').spawn, 
    cmdd = spawn('your_command'); //something like: 'man ps' 

cmdd.stdout.on('data', function (data) { 
    console.log('' + data); 
}); 
cmdd.stderr.setEncoding('utf8'); 
cmdd.stderr.on('data', function (data) { 
    if (/^execvp\(\)/.test(data)) { 
    console.log('Failed to start child process.'); 
    } 
}); 
+1

我想通過PID得到過程信息 – pianist829 2013-03-18 11:09:18

+0

要得到'PID'你應該使用'process.pid ',但不是'process.getgid'。 – zavg 2013-07-15 16:40:30

+0

@zavg:感謝您的友好輸入。 – 2013-07-16 05:29:43

10

在Ubuntu Linux,我試過

var process = require('process'); but it gave error. 

我試着不導入它的工作

任何處理模塊
console.log('This process is your pid ' + process.pid); 

還有一件事我注意到,我們可以使用

process.title = 'node-chat' 

過程中使用以下命令來檢查在bash shell中的進程的NodeJS定義名稱

ps -aux | grep node-chat 
+1

在您的最後一個示例中,我認爲您將Javascript與bash混合在一起。 – starbeamrainbowlabs 2014-03-17 14:06:21