应用程序打开的日志端口

Sim*_*ter 0 networking linux

我正在寻找类似的东西:

tcpdump -p PID        # But tcpdump does not know the PID
Run Code Online (Sandbox Code Playgroud)

或者

lsof -i --continuous  # But lsof just runs and exits, no «live logging»
Run Code Online (Sandbox Code Playgroud)

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

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

Jay*_*Jay 5

你可以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
Run Code Online (Sandbox Code Playgroud)

  • 如果 `git` 派生出一个额外的进程来完成这项工作,请在 `strace` 中添加一个 `-f` 标志。是的,如果你没有管道重定向 `2&gt;&amp;1` 那么它只会在 `stdout` 上 grep,它是 `COMMAND` 的输出。 (2认同)