Busybox,netstat,no -p

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

您可以在/proc/net/tcp以略微更丑的forms(又名hex)查找等效信息。 在那里,你可以find连接的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 ... 

(在普通的netstat中,不能在busybox的netstat中, -e选项也给你提供额外的信息。)

 $ sudo ls -l /proc/2560/fd ... lrwx------ 1 root root 64 7 jan 22.50 3 -> socket:[6115] 

您需要第二步的root访问权限。

不像-p选项那么方便,显然,但是工作在一个绑定。 如有必要,可以编写脚本。

如果你没有机会重buildBusybox,这可能没有帮助,但如果它帮助任何人…

Busybox有一个configuration选项来支持Busybox netstat-p开关。 查看选项CONFIG_FEATURE_NETSTAT_PRG ,在busybox menuconfig中通过Networking Utilities→netstat→启用PID /程序名称输出