Linux

Busybox,netstat,沒有 -p

  • May 22, 2021

我的 DreamBox 上有一個超舊的(不要問為什麼)BusyBox (BusyBox v1.01 (2008.12.19-21:31+0000) Built-in shell (ash))。我想知道哪個程序使用 netstat 打開了哪個連接。但我發現 BusyBox 的 netstat 不包含*-p*選項。我還必須找出哪些程序已打開(並正在使用)相應的套接字?

您可以在/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
...

(在普通的 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]

第二步需要root權限。

顯然,不如該-p選項方便,但可以在綁定中使用。如有必要,可以編寫腳本。

引用自:https://serverfault.com/questions/219984