Почему sshd удалил мой / dev / zero?

Когда я делаю lsof +c 0 | grep /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 – это то, что интригует меня – из manpages, это означает:

DEL для файла карты Linux, который был удален

Тем не менее, в прошлый раз, когда я проверил, мой /dev/zero был все еще там, даже если я перезагружаюсь … Так почему бы sshd попытаться удалить это символьное устройство и почему бы ему даже добиться успеха, учитывая, что:

  • Это символьное устройство, а не файл
  • он принадлежит root

Информация о ОС: 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 для /some/file будет выглядеть так:

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

Содержимое удаленного файла остается на диске до тех пор, пока процесс не уйдет или не будет убит, но не будет напрямую доступен.

Версия /some/file которую я создал с помощью touch , не является той, которую использует some-command .