Estou lendo um arquivo de 550MB em / dev / null e estou recebendo
dd: writing '/dev/null': No space left on device
Eu estava 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 esse 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
Ao invés 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"
ls -l /dev/null
/dev/null
nunca deve disparar esse erro, pois na verdade ele não grava nada em lugar algum. Você obtém o mesmo efeito semtime
? Poste a saída destrace dd if=$filename of=/dev/null
(faça-o com um arquivo que não contém informações confidenciais ) oustrace dd if=$filename of=/dev/null
setime
for necessário para acionar o erro.Respostas:
/dev/null
é um arquivo especial, do tipo dispositivo de caractere. O driver para esse dispositivo de caracteres ignora o que você tenta gravar no dispositivo e as gravações sempre são bem-sucedidas. Se uma gravação/dev/null
falhar, significa que você conseguiu remover o apropriado/dev/null
e substituí-lo por um arquivo comum. Você pode ter removido acidentalmente/dev/null
; o próximo… >/dev/null
teria recriado como um arquivo regular.Corra
ls -l /dev/null
e verifique se a linha se parece comEle deve começar com
crw-rw-rw-
:c
para um dispositivo de caractere e permissões que permitam a todos ler e escrever. O arquivo deve pertencer à raiz, embora não seja muito importante. Os dois números após o proprietário e o grupo identificam o dispositivo (número principal e secundário ). Acima, mostro os valores no Linux; variantes diferentes do 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
MAKEDEV
comandos, no PATH do root ou no/dev
. Executecd /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 éfonte
/dev/null
em algumas circunstâncias, talvez algo comotmp_file=$(mktemp); … … … if [ "$mode" = "quiet" ]; then tmp_file=/dev/null; done; … … … rm "$tmp_file"