Linux
為什麼 sshd 刪除了我的 /dev/zero?
當我這樣做時
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
然後
lsof
for/some/file
看起來像:some-command ... ... DEL ... ... ... /some/file
被刪除文件的內容繼續保留在磁碟上,直到程序釋放或被終止,但不能直接訪問。
/some/file
我使用創建的版本touch
不是some-command
正在使用的版本。