我有一台装有多个应用程序的 RHEL 服务器,我正在尝试找出其中哪一个应用程序正在调用外部 Web 服务。我有显示正在进行的调用的 TCP 转储,并且通过各种工具,我能够确定哪个临时端口正在进行这些调用。但是,我无法弄清楚如何将该临时端口映射到 pid。我知道我可以使用将lsof -i
绑定端口映射到 pid,但这不是我的问题。
有没有办法将正在使用的临时端口映射到 pid 或其他指示符以指示哪个文件正在进行调用?
答案1
lsof -i $PROTOCOL:$PORT
fuser $PORT/$PROTOCOL
netstat -np | grep $PORT
任何一种都可以。以下是示例输出,显示我的邮件客户端使用临时端口 56375 与 IMAP 服务器通信以获得进一步解释:
$ sudo netstat -np | grep 56375
tcp 0 0 192.168.1.1:56375 217.70.184.11:993 ESTABLISHED 3256/thunderbird
$ fuser 56375/tcp
56375/tcp: 3256
$ lsof -i tcp:56375
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
thunderbi 3256 me 87u IPv4 510573 0t0 TCP hostname:56375->example.com:imaps (ESTABLISHED)
答案2
netstat
将列出所有各自的 pid 和端口。
netstat -nlp
将为您提供端口到 pid 的映射。