Linux

為什麼我會(在 /proc/pid//fd 下)找到符號連結損壞的套接字

  • February 13, 2017

我認為它們沒有關閉,因為我希望在 close() 之後 fd 會消失,但我看到一堆揮之不去的 fd -> socket

$$ xxxxx $$帶有損壞的符號連結的條目似乎不會很快消失。是什麼導致了這種狀態?

插座

$$ xxxxx $$符號連結總是被破壞。您無法提供打開具有給定 inode 編號的套接字的路徑。 我試過了,似乎你無法打開/proc/pidX/fd/Y引用套接字的文件。但是,如果它指的是真實文件,即使該文件已被刪除,您也可以。它不完全是符號連結。這很神奇(即一種特殊情況)。

符號連結目標的文本不是指文件,而是指/proc/net/tcp表中使用編碼文本欄位描述每個套接字的條目。例如,目前在我的系統上,我看到:

$ ls -l /proc/24724/fd/7
lrwx------ 1 vagrant vagrant 64 Feb 13 15:08 /proc/24724/fd/7 -> socket:[19164451]

對應於tcp表中的這一行:

$ grep 19164451 /proc/net/tcp
433: 0100007F:C8AA 0100007F:0C8A 01 00000000:00000000 02:00000286 00000000  1000        0 19164451 2 0000000000000000 20 4 1 10 27

一些快速的 Google 搜尋應該可以幫助您找到大量資源來解碼這些行。兩個例子:

http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html https://stackoverflow.com/questions/5992211/list-of-possible-internal-socket-statuses-from-proc

如果您想要一個為您處理它們的工具,netstat那麼如果您使用-p選項告訴它讀取所有/proc fd連結以了解哪些程序屬於哪些套接字,則可以這樣做。嘗試:

netstat -tuapn

引用自:https://unix.stackexchange.com/questions/280810