Estoy leyendo un archivo de 550 MB en / dev / null y obtengo
dd: writing '/dev/null': No space left on device
Me sorprendió. Pensé que / dev / null es un agujero negro donde puedes enviar todo lo que quieras (porque es un fs virtual).
Sí, mi disco está casi lleno cuando recibo este error. ¿Qué puedo hacer además de eliminar contenido del disco?
ls -l /dev/null
-rw-r--r-- 1 root root 0 July 7 21:58 /dev/null
En vez de
crw-rw-rw- 1 root root 1, 3 July 7 02:58 /dev/null
Comando que estoy usando:
time sh -c "dd if=$filename of=/dev/null"
ls -l /dev/null
/dev/null
nunca debe activar este error, ya que en realidad no escribe nada en ningún lado. ¿Obtiene el mismo efecto sintime
? Publique el resultado destrace dd if=$filename of=/dev/null
(hágalo con un archivo que no contenga información confidencial ), o destrace dd if=$filename of=/dev/null
sitime
es necesario para activar el error.Respuestas:
/dev/null
es un archivo especial, de tipo dispositivo de caracteres. El controlador para ese dispositivo de caracteres ignora todo lo que intente escribir en el dispositivo y las escrituras siempre tienen éxito. Si/dev/null
falla una escritura en , significa que de alguna manera ha logrado eliminar el correcto/dev/null
y reemplazarlo por un archivo normal. Es posible que haya eliminado accidentalmente/dev/null
; entonces el siguiente… >/dev/null
lo habría recreado como un archivo normal.Corre
ls -l /dev/null
y comprueba que la línea se parece a algoDebe comenzar con
crw-rw-rw-
:c
para un dispositivo de caracteres y permisos que permitan a todos leer y escribir. El archivo debe ser propiedad de root, aunque no es muy importante. Los dos números después del propietario y el grupo identifican el dispositivo ( número de dispositivo principal y secundario ). Arriba muestro los valores bajo Linux; Las diferentes variantes de Unix tienen valores diferentes. La fecha suele ser la fecha en que se instaló el sistema o la fecha del último reinicio y no importa.Si necesita volver a crear el archivo, algunos sistemas proporcionan
MAKEDEV
comandos, ya sea en la RUTA de la raíz o en/dev
. Ejecutarcd /dev; ./MAKEDEV std
o algo así para recrear los dispositivos básicos estándar como/dev/null
. O cree el dispositivo manualmente, proporcionando los números de dispositivo correctos; en Linux, eso esfuente
/dev/null
en algunas circunstancias, tal vez algo comotmp_file=$(mktemp); … … … if [ "$mode" = "quiet" ]; then tmp_file=/dev/null; done; … … … rm "$tmp_file"