我在哪里可以找到所有正在运行的 pm2 应用程序的端口?

Sch*_*dko 22 node.js pm2

我有一台安装了 PM2 和 10 个正在运行的节点应用程序的服务器。每个应用程序都应该使用不同的端口号运行。当我在服务器上安装新应用程序时,我需要有关所用端口的信息。使用 'pm2 list' 我得到了很多关于应用程序的信息,但没有得到端口的信息。

pm2 list

App name       ? id ? version ? mode ? pid   ? status ? restart ? uptime ? cpu  ? mem        ? user ? watching
example_name   ? 1  ? 0.0.0   ? fork ? 25651 ? online ? 0       ? 37D    ? 0%   ? 386.3 MB   ? root ? disabled
Run Code Online (Sandbox Code Playgroud)

我无法找到所有使用过的端口的概览,而且我无法相信 PM2 没有提供这些重要信息。有谁知道我在哪里看到 PM2 中所有使用过的端口的列表?

Fab*_*ian 15

大多数时候,端口在日志中可见。尝试这个:

pm2 logs

大多数应用程序的源代码都会在应用程序运行时记录暴露的端口。这对于查找正在运行 pm2 应用程序的所有端口确实非常有帮助。


wux*_*dia 13

是的,这对于 pm2 恕我直言有点失败。仅当您有多个实例(站点)在服务器上运行时。我用:

ss -tnlp | grep "node /"

然后,您可以从 pm2 和端口查看 pid,或者在我的情况下,您只获得它运行的目录的片段。更新:你可以使用这个怪物:

ss -ntlp | grep $(pm2 ls | grep "SITENAME" | awk '{print $10}') | awk '{print $4}'
Run Code Online (Sandbox Code Playgroud)

哪个转储端口。

OP 添加了一条评论,说他将端口号添加到正在运行的节点应用程序的名称中,这可能会变得混乱,但这是一个好主意。


小智 10

sudo netstat -tnlp
Run Code Online (Sandbox Code Playgroud)
  • -t仅适用于 TCP
  • -l用于监听端口
  • -n不查找服务和名称,仅显示数字
  • -p用于显示处理器信息


Dan*_*ara 7

嗨 Schmidko,我也尝试过,但我也没有在 pm2 中找到这样的选项,所以我目前正在从 pm2 l 获取 pid,然后使用以下命令在我的 linux 操作系统上获取端口

sudo netstat -ano -p tcp | grep <PID>
Run Code Online (Sandbox Code Playgroud)

所以我得到这样的输出:tcp6 0 0 :::1111 ::* LISTEN 2111/app.js off (0.00/0/0)

其中 2111/app.js 是 PID & :::1111 是端口

(在这里发表评论,因为我无权发表评论)

  • 我通过将端口号添加到应用程序名称解决了这个问题:) 当服务器上运行 20 个应用程序时,您的解决方案有点复杂。但对这种方法表示赞赏。:) (2认同)