/proc/net/tcp に表示されない /proc/[pid]/net/tcp の接続

/proc/net/tcp に表示されない /proc/[pid]/net/tcp の接続

すべてのネットワーク接続を取得し、それを使用してPIDと接続するコードを実装しています。

tcp4の場合、私がリストした各pidについてそこからソケットのリンクを検索し、対応するinode番号を読み取り、接続に関する詳細を取得する/proc/pid/fdために検索します。/proc/net/tcp

ただし、inode番号を調べると、次のような結果/proc/net/tcpが出ます。少ないで検索したときよりも接続が良くなりました/proc/[pid]/net/tcp。たとえば、上記のプロセスに依存して実行すると/proc/net/tcpブラウザで開かれたソケットのみが表示されますが、依存している場合は/proc/[pid]/net/tcp弟と「java」プロセスが開いた接続を持つことがわかります。

それでは、私はそれに頼るべきですか/proc/net/tcp、それとも/proc/[pid]/net/tcpこの目的に頼るべきですか? psutilはPythonで広く使用されているパッケージで、/proc/net/tcp片側でそれを使用しているので混乱しています/proc/[pid]/net/tcp

答え1

/proc/netはいシンボリックリンクなので、/proc/self/netプロセスと検証されたプロセスが異なる状態にある場合にのみ、およびは/proc/net異なり/proc/[pid]/netます。[pid]/proc/netネットワークネームスペース

すべてのソケットを一覧表示するには、同じネットワーク名前空間内の両方のプロセスのすべての名前空間を確認する必要があります。両方のプロセスの/proc/PID/ns/netinode 番号は同じです。これにより、システム内のさまざまなネットワーク名前空間をすべて列挙できます。

関連情報