すべてのネットワーク接続を取得し、それを使用して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/net
inode 番号は同じです。これにより、システム内のさまざまなネットワーク名前空間をすべて列挙できます。