¿Cómo crear / dev / null?

65

Eliminé mi / dev / null. ¿Cómo puedo restaurarlo?

LanceBaynes
fuente
66
Una vez descubrí que / dev / null fue reemplazado por un archivo normal en el que solo la raíz podía escribir. Pensé por un momento que tendría que reinstalar todo, pero como se menciona a continuación, la recuperación es crucial si conoces el truco.
Stuart Woodward
1
Me las arreglé para eliminar / dev / null al hacer que mi tubería fuera incorrecta volteando $ y & cuando ejecuté un comando rm en un script. ¡Ay!
flickerfly

Respuestas:

81
mknod /dev/null c 1 3
chmod 666 /dev/null

Use estos comandos para crear /dev/nullo usar la página de null(4)manual para obtener más ayuda.

harish.venkat
fuente
55
Para completar, señalaría que esto se aplica a todos los sistemas basados ​​en Linux; otros sistemas pueden tener números diferentes.
Random832
2
Además, esto solo configura el archivo del dispositivo en sí, no restaurará sus permisos. Tendrás que chmod go+whacerlo manualmente.
Atila O.
77
¡El número de la bestia!
wefwefa3
77
mknod -m 0666 /dev/null c 1 3- lo mismo pero más corto
fnkr
1
mknod -m 0666 /dev/null c 1 3funcionó perfectamente para restaurar / dev / null en CentOS 7, solo para que otros lo supieran.
Bozzy
32

En muchas unidades tradicionales, puede recrear dispositivos con sus permisos predeterminados con el MAKEDEVscript . Este script está tradicionalmente en Ubuntu, /devpero está en /sbinUbuntu. Pase un argumento que indique qué dispositivos desea crear; en Ubuntu eso es std(también puedes escribir MAKEDEV null, eso crea nulltan bien como otros dispositivos).

En los sistemas Linux modernos que ejecutan udev , puede decirle a udev que vuelva a crear todos o algunos dispositivos basados ​​en controladores disponibles y hardware conectado, a través de udevadm trigger:

udevadm trigger --sysname-match=null
Gilles 'SO- deja de ser malvado'
fuente
¿Esta respuesta sigue vigente? Estoy en CentOS 7 y acabo de sobrescribir mi / dev / null por error, el udevadm trigger --sysname-match=nulltruco no funcionó para mí, aunque mknod -m 0666 /dev/null c 1 3funcionó perfectamente.
Bozzy
@Bozzy Sé que funcionó con el udev pre-systemd. No lo he intentado recientemente, pero que yo sepa, esto todavía debería funcionar. Si agrega --verbose, ¿aparece en la lista /sys/devices/virtual/mem/null ?
Gilles 'SO- deja de ser malvado'
Sí, enumera eso. Intenté sobrescribir nuevamente / dev / null en mi máquina de desarrollo, pero curiosamente no puedo hacerlo aquí, así que no puedo hacer un análisis más profundo ahora ...
Bozzy