Networking
/proc/ 中的連接pidp一世dpid/net/tcp 沒有出現在 /proc/net/tcp 中
我正在實現程式碼以獲取所有網路連接並將它們與使用它們的 PID 相關聯。
比如說,對於 tcp4,對於每個 pid,我正在列出
/proc/pid/fd
,在那裡搜尋到套接字的連結,讀取它們的 inode 編號並查找它們/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
.
/proc/net
是一個符號連結/proc/self/net
,所以/proc/net
和/proc/[pid]/net
只有當程序[pid]
和被檢查的程序/proc/net
在不同的網路命名空間時才不同。如果要列出所有套接字,則必須查看所有名稱空間;對於同一網路命名空間中的兩個程序,它們
/proc/PID/ns/net
將具有相同的 inode 編號。這樣您就可以列舉系統上所有不同的網路命名空間。