dd: escrevendo '/ dev / null': Não há espaço disponível no dispositivo

9

Estou lendo um arquivo de 550MB em / dev / null e estou recebendo

dd: writing '/dev/null': No space left on device

Fiquei surpreso. Eu pensei que / dev / null é um buraco negro onde você pode enviar o quanto quiser (porque é um fs virtual).

Sim, meu disco está quase cheio quando recebo este erro. O que posso fazer além de excluir o conteúdo do disco?

 ls -l /dev/null
 -rw-r--r--    1 root     root             0 July 7 21:58 /dev/null

Em vez de

 crw-rw-rw-    1 root     root        1,   3 July 7 02:58 /dev/null

Comando que estou usando:

time sh -c "dd if=$filename of=/dev/null"
    
por abc 13.08.2012 / 22:58

1 resposta

15

/dev/null é um arquivo especial, do tipo character device. O driver desse dispositivo de caractere ignora tudo o que você tenta gravar no dispositivo e as gravações são sempre bem-sucedidas. Se uma gravação em /dev/null falhar, significa que você de alguma forma conseguiu remover o /dev/null adequado e substituí-lo por um arquivo regular. Você pode ter removido acidentalmente /dev/null ; então o próximo … >/dev/null teria recriado como um arquivo normal.

Execute ls -l /dev/null e verifique se a linha é parecida com

crw-rw-rw- 1 root root 1, 3 Sep 13  2011 /dev/null

Ele deve começar com crw-rw-rw- : c para um dispositivo de caractere e permissões que permitem que todos leiam e escrevam. O arquivo deve ser de propriedade de root, embora não seja muito importante. Os dois números após o proprietário e o grupo identificam o dispositivo ( maior e menor número de dispositivo ). Acima eu mostro os valores no Linux; diferentes variantes unix têm valores diferentes. A data normalmente é a data em que o sistema foi instalado ou a data da última reinicialização e não importa.

Se você precisar recriar o arquivo, alguns sistemas fornecerão um MAKEDEV de comandos, seja no PATH do root ou em /dev . Execute cd /dev; ./MAKEDEV std ou algo assim para recriar os dispositivos básicos padrão, como /dev/null . Ou crie o dispositivo manualmente, fornecendo os números corretos do dispositivo; no Linux, isso é

mknod -m 666 /dev/null c 1 3
    
por 14.08.2012 / 02:39