【问题标题】:NODEJS process infoNODEJS 进程信息
【发布时间】:2013-03-06 11:28:58
【问题描述】:

如何在Node.JS程序中获取带有PID(进程ID)的进程名称,平台包括Mac、Windows、Linux。

它有一些节点模块来做吗?

【问题讨论】:

  • nodejs.org/api/process.html 只是process.pid
  • 这个API不是唯一能访问PID的吗 我要通过PID获取更多信息
  • 进程还为您提供平台、架构、内存使用情况、cwd 等。您还想要什么其他信息?
  • 您想要为您自己的 Node 进程或其他进程提供该信息吗?
  • @pianist829:检查更新的答案。特别是关于您的需求。测试后请告诉我...仅适用于一个窗口,但您可以更改为具有相同逻辑的其他操作系统 cmd

标签: node.js process


【解决方案1】:

是的,内置/核心模块 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.');
  }
});

【讨论】:

  • 要获得PID,您应该使用process.pid,而不是process.getgid
  • 你不需要 require("process"),它是一个已经可用的全局变量。 nodejs.org/api/process.html#process_process
  • 使用 ==> if (items.toString().search('\\b' + yourPID + '\\b') > -1) 而不是 if(items.toString()。 indexOf(yourPID) > -1)。因为如果 'yourPID' 在除 PID 以外的项目中匹配,则为真(例如:如果在内存插槽中匹配,则为真)
【解决方案2】:

在 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

【讨论】:

【解决方案3】:

cf官方文档https://nodejs.org/dist/latest-v10.x/docs/api/process.html#process_process_pid

不再需要 require。 好的样本是:

 console.log(`This process is pid ${process.pid}`); 

【讨论】:

    猜你喜欢
    • 2018-02-25
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多