在linux上列出所有运行中的名为“app.js”的节点应用程序的端口(一行程序)

bpsygsoo  于 2023-06-05  发布在  Linux
关注(0)|答案(2)|浏览(208)

我正在尝试整合一个One-liner Linux命令,它允许我列出所有运行的节点应用程序的端口,这些应用程序的名称为“app.js”。
我不知道如何将管道输出到另一个也需要管道的命令。我可以用三个命令来完成这个任务,但我想知道是否可以在一个命令中完成,而不使用临时文件。

ps -a|grep node|awk '{print $1}'|xargs ps -Flww -p|grep "node app.js"|awk '{print $4}'>findNodeAppJsPorts.txt
netstat -tulpn|grep -f findNodeAppJsPorts.txt
rm findNodeAppJsPorts.txt

我相信一些Linux忍者知道如何做到这一点,你能帮助吗?

omqzjyyz

omqzjyyz1#

如果你使用bash,你可以尝试使用process substitution来删除临时文件。例如:

netstat -tulpn | grep -f <(pgrep -a node | grep 'node app.js' | awk '{print $1}')
yc0p9oo0

yc0p9oo02#

感谢Oleg的建议,使用你的建议,我能够用这个命令得到我想要的东西:

(ps -aux|grep "node"|grep ".js"|grep -v "/forever/"|awk '{print $2}') | while read line; do lsof -Pan -p $line -i -w; done

它执行以下操作:

  • 查找运行节点服务器的所有进程ID(PID)
  • 排除永久监视器
  • 并在-p选项之后将每个PID馈送到lsof命令
  • 最后打印这些节点服务器使用的所有开放端口。

相关问题