查找所有正在运行的 Node.js 应用程序的 PID 和端口号。

4

我需要找到机器上所有运行中的node.js应用程序的pid、端口和路径,然后根据路径查找所有类以及类中的函数。例如,假设我们有两个独立的不同文件夹中的node应用程序,并且希望按照上述方式查找。我尝试了很久但未能找到解决方案。我必须为客户项目实现此功能。是否可能,并且如果可能,如何完成?

任何见解都将不胜感激。

谢谢!感谢任何帮助。

3个回答

4

是的,有几种方法可以做到这一点 -

  • pgrep 会查找当前正在运行的进程,并将与选择条件匹配的进程ID列表输出到标准输出(stdout)。

pgrep node

  • 进程命令 (ps)

ps ax 会给出完整的进程列表, 添加 'u' 选项会给出详细信息。例如 ps aux 要搜索特定的进程,需要使用 grep 命令,因此对于nodejs,应该使用 ps aux | grep node

  • 网络统计信息 (netstat)

netstat -a | more :显示所有打开的端口(包括未连接的)

netstat -at :列出所有 TCP 端口

netstat -l :仅列出监听状态的端口

netstat -lt :仅列出监听状态的 TCP 端口

netstat -pt :显示 PID 和程序名称

所以如 chris-lam 所建议的, netstat -lntp | grep node 将列出所有作为node进程运行的监听TCP端口。

要在代码中使用它,以下代码可能会有所帮助 -

const {exec} = require('child_process'); 
exec('ps aux | grep node', (err, stdout, stderr) => {
  if (err) {
    // node couldn't execute the command
    return;
  }

  // the *entire* stdout and stderr (buffered)
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

3
你可以使用netstat命令查找端口和PID。
netstat -lntp | grep node

ps 命令可以帮助你找到进程的完整命令:

ps aux | grep node

我们可以在Node.js脚本、Shell脚本或任何文件中使用上述命令以便稍后执行它吗? - Shyam
1
是的,但你的节点应用程序必须以root身份运行,才能具有运行"netstat"或"ps"命令的权限。 - Chris Lam

0

经过一些谷歌搜索和研究,我发现这是对我来说更简单的方法。 我还没有找到一行代码,所以我的解决方案由两个命令组成:

ps aux | grep node

它将返回所有带有进程 ID 和路径的节点进程

netstat -lntp | grep node

它将返回进程ID和端口号

与它们一起使用

ps aux | grep node && netstat -lntp | grep node

会给你类似这样的东西:

enter image description here

如果你想知道哪个应用程序正在使用哪个端口,你可以从第二个命令的输出中查找端口,获取最后一列的pid,然后在第一个命令的输出中查找该pid:从那里你应该能够了解使用该端口的程序的路径。

这不是非常优雅,但这是我发现的更简单的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接