我需要找到机器上所有运行中的node.js应用程序的pid、端口和路径,然后根据路径查找所有类以及类中的函数。例如,假设我们有两个独立的不同文件夹中的node应用程序,并且希望按照上述方式查找。我尝试了很久但未能找到解决方案。我必须为客户项目实现此功能。是否可能,并且如果可能,如何完成?
任何见解都将不胜感激。
谢谢!感谢任何帮助。
是的,有几种方法可以做到这一点 -
pgrep node
ps ax
会给出完整的进程列表, 添加 'u' 选项会给出详细信息。例如 ps aux
要搜索特定的进程,需要使用 grep
命令,因此对于nodejs,应该使用 ps aux | grep node
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}`);
});
netstat
命令查找端口和PID。netstat -lntp | grep node
ps
命令可以帮助你找到进程的完整命令:
ps aux | grep node
经过一些谷歌搜索和研究,我发现这是对我来说更简单的方法。 我还没有找到一行代码,所以我的解决方案由两个命令组成:
ps aux | grep node
它将返回所有带有进程 ID 和路径的节点进程
netstat -lntp | grep node
它将返回进程ID和端口号
与它们一起使用
ps aux | grep node && netstat -lntp | grep node
会给你类似这样的东西:
如果你想知道哪个应用程序正在使用哪个端口,你可以从第二个命令的输出中查找端口,获取最后一列的pid,然后在第一个命令的输出中查找该pid:从那里你应该能够了解使用该端口的程序的路径。
这不是非常优雅,但这是我发现的更简单的方法。