Linux
Busybox,netstat,沒有 -p
我的 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
選項方便,但可以在綁定中使用。如有必要,可以編寫腳本。