Linux

為什麼 sshd 刪除了我的 /dev/zero?

  • February 8, 2015

當我這樣做時lsof +c 0 | grep /dev/zero,我看到以下兩行:

sshd    19064    root  DEL    REG    0,4    497862    /dev/zero
sshd    19064    root  DEL    REG    0,4    498725    /dev/zero

DEL關鍵字讓我很感興趣——從手冊頁來看,它的意思是:

DEL用於已刪除的 Linux 映射文件

然而,上次我檢查我/dev/zero的仍然存在,即使我重新啟動……那麼為什麼sshd會嘗試刪除這個字元設備,為什麼它甚至會成功:

  • 它是字元設備,而不是文件
  • 它歸根使用者所有

作業系統資訊: Linux localhost 3.4.103 #1 SMP PREEMPT Thu Dec 18 13:07:12 CST 2014 armv7l GNU/Linux (Arch Linux)

DEL並不表示該程序已刪除/dev/zero,但該程序正在使用/dev/zero並且正在使用的實例/dev/zero已被刪除。例如,如果我有一個some-command使用的命令(比如說),/some/file我會這樣做:

$ some-command &
$ rm /some/file
$ touch /some/file

然後lsoffor/some/file看起來像:

some-command    ...    ...  DEL    ...    ...    ...    /some/file

被刪除文件的內容繼續保留在磁碟上,直到程序釋放或被終止,但不能直接訪問。

/some/file我使用創建的版本touch不是some-command正在使用的版本。

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