Busybox,netstat,否-p


10

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


lsof是该版本的busybox的一部分吗?
Zoredache

不幸的是没有。
a1337q 2011年

Answers:


15

您可以在中找到较为丑陋的形式(即十六进制)的等效信息/proc/net/tcp。在这里,您可以找到连接的索引节点,可以在下面查找它/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显然,它不如选项那样方便,但可以绑定。如有必要,可以编写脚本。


听起来很酷,但是我的netstat不能正常工作,它在-e选项下没有输出任何附加信息。我还有-e的 6列:Proto,Recv-Q,Send-Q,本地地址,外部地址,状态。端口有办法吗?我可以看到端口..
a1337q

您是对的,我一定搞砸了我的考试。我对其进行了编辑,以为您提供可行的解决方案。
Peter Eisentraut 2011年

2
如何找到第二个命令中键入的数字“ 2560”?这就是问题所在。
ygoe

1
@ygoe,您必须6115像这样使用和使用它:find /proc/ -type l | grep /fd/ | xargs ls -la 2>/dev/null | grep 6115
山姆

3

如果您没有机会重建Busybox,这可能无济于事,但万一它可以帮助任何人...

Busybox确实具有配置选项以支持Busybox-p切换。请参阅通过网络实用程序→netstat→启用PID /程序名称输出在busybox menuconfig中选择的选项。netstatCONFIG_FEATURE_NETSTAT_PRG


0

如果您拥有或可以ss使用设备,它也可以显示PID:

ss -ltp # for TCP
ss -lup # for UDP
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.