Por que o sshd excluiu meu / dev / zero?

4

Quando faço lsof +c 0 | grep /dev/zero , vejo as duas linhas seguintes:

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

A DEL palavra-chave é o que me intriga - nas páginas de trabalho, isso significa:

DEL for a Linux map file that has been deleted

No entanto, da última vez que verifiquei meu /dev/zero ainda estava lá, mesmo se eu reiniciar ... Então, por que sshd tentaria excluir este dispositivo de caractere e por que ele seria bem-sucedido, dado que:

  • É um dispositivo de caractere, não um arquivo
  • é de propriedade do root

Informações do sistema operacional: Linux localhost 3.4.103 #1 SMP PREEMPT Thu Dec 18 13:07:12 CST 2014 armv7l GNU/Linux (Arch Linux)

    
por Robert Rossmann 08.02.2015 / 11:22

1 resposta

3

DEL não indica que esse processo excluiu /dev/zero , mas que esse processo está usando /dev/zero e a instância de /dev/zero que estava sendo usada desde então foi excluída. Por exemplo, se eu tiver um comando (digamos some-command ) que use /some/file e eu faço:

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

Então, lsof para /some/file se pareceria:

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

O conteúdo do arquivo excluído continua em disco até que o processo seja interrompido ou seja eliminado, mas não estará diretamente acessível.

A versão de /some/file que criei usando touch não é a que some-command está usando.

    
por 08.02.2015 / 12:02