解決策 1:
/proc/net/tcp
には、やや醜い形式 (別名 16 進数) の同等の情報があります。 .そこに接続の 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]
2 番目のステップには root アクセスが必要です。
-p
ほど便利ではない オプション、明らかに、バインドで動作します。必要に応じて、スクリプト化できます。
解決策 2:
Busybox を再構築する機会がない場合、これは役に立たないかもしれませんが、誰かの役に立てば...
Busybox には -p
をサポートする設定オプションがあります Busybox netstat
のスイッチ .オプション CONFIG_FEATURE_NETSTAT_PRG
を参照 Networking Utilities → netstat → Enable PID/Program name output を介して、busybox menuconfig で選択 .