Se eu fizer: touch file; mv file /dev/null
como raiz, /dev/null
desaparece. ls -lad /dev/null
resulta em nenhum arquivo ou diretório. Isso interrompe aplicativos que dependem do /dev/null
SSH e podem ser resolvidos fazendo isso mknod /dev/null c 1 3; chmod 666 /dev/null
. Por que mover um arquivo regular para esse arquivo especial resulta no desaparecimento de /dev/null
?
Para esclarecer, isso foi feito para fins de teste e eu entendo como o mv
comando funciona. O que me interessa é o motivo pelo qual, ls -la /dev/null
antes de substituí-lo por um arquivo regular, mostra a saída esperada, mas depois mostra que /dev/null
não existe, mesmo que um arquivo tenha sido supostamente criado por meio do mv
comando original e o comando file mostre Texto ASCII. Eu acho que isso deve ser uma combinação do ls
comportamento do comando em conjunto com devfs
quando um arquivo não especial substitui um caractere / arquivo especial. Isso ocorre no Mac OS X, os comportamentos podem variar em outros sistemas operacionais.
rm
comando
devfs
é engraçado com arquivos normais. Estranho, você não recebeu um erro mv
. Que tal assim touch testfile; mv testfile /dev
:?
mv
só pode ser atômico no mesmo sistema de arquivos.
/dev/null
.