记录应用程序打开的端口

记录应用程序打开的端口

我正在寻找类似的东西:

tcpdump -p PID        # But tcpdump does not know the PID

或者

lsof -i --continuous  # But lsof just runs and exits, no «live logging»

记录应用程序打开了哪些连接。

就我而言,我想找出 git 在提交时连接到哪个端口。这发生在几分之一秒内,所以我不能使用 lsof。如果流量很大,按 PID 或进程名称进行过滤会很有用。

答案1

您可以strace处理该过程。

$ strace -e trace=connect git ...

connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("<your local DNS resolver>")}, 16) = 0
connect(4, {sa_family=AF_INET, sin_port=htons(<PORT>), sin_addr=inet_addr("<GIT SERVER>")}, 16) = 0

答案2

就我而言,我想找出 git 在提交时连接到哪个端口。

为什么不:

$ git config --get remote.origin.url

默认端口为:

  • git://- 9418
  • git+ssh://- 22
  • http://- 80
  • ...

否则,git 会在提交时让你知道它连接到哪个端口:

$ git config --get remote.origin.url
git+ssh://[email protected]:1234/project/repo.git

相关内容