Busybox,netstat,没有 -p

a13*_*37q 11 linux busybox linux-networking embedded-linux

我的 DreamBox 上有一个超旧的(不要问为什么)BusyBox (BusyBox v1.01 (2008.12.19-21:31+0000) Built-in shell (ash))。我想找出哪个进程使用 netstat 打开了哪个连接。但是我发现 BusyBox 的 netstat 不包含-p选项。我还有什么其他可能性可以找出哪个进程已经打开(并正在使用)相应的套接字?

Pet*_*aut 17

您可以在/proc/net/tcp. 在那里,您可以找到连接的 inode,您可以在/proc/$pid/fd/.

例如:

$ cat /proc/net/tcp
sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
 0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 6115 1 f5adc4c0 300 0 0 2 -1
...
Run Code Online (Sandbox Code Playgroud)

(在普通的 netstat 中,而不是在 busybox netstat 中,该-e选项还为您提供了额外的信息。)

您可以使用以下命令找到与 inode 对应的进程:

# for x in $(find /proc/ | grep /fd/); do ls -la $x 2>/dev/null done | grep 6115
...
lrwx------ 1 root root 64  7 jan 22.50 /proc/2560/fd/3 -> socket:[6115]
Run Code Online (Sandbox Code Playgroud)

第二步需要root访问权限。

-p显然,不如选项方便,但可以绑定。如有必要,可以编写脚本。

  • 你如何找到你在第二个命令中输入的数字“2560”?这就是问题所在。 (2认同)