Noticias

Preguntas y respuestas sobre el agujero negro de Linux – / dev / null

Según la NASA, «un agujero negro es un lugar en el espacio donde la gravedad es tan fuerte que ni siquiera la luz puede salir». Hay algo similar en el universo de Linux: descarta todo lo que está escrito en él y solo devuelve un EOF (final de archivo) cuando se lee. Es un archivo especial también conocido como dispositivo nulo. /dev/null

¿Entonces es solo un archivo?

Sí, y la mayoría de las cosas en Linux son un archivo, pero /dev/null no es un archivo normal, profundicemos.

c en crw-rw-rw- nos dice que es un archivo de caracteres especiales, lo que significa que procesa los datos carácter a carácter. Esto se puede comprobar con test -c como:

/ dev / null 2

¿Cuál es el contenido del archivo?

Veamos eso haciendo el cat Mando:

/ dev / null 3

Como ya se mencionó, solo devuelve un EOF (final de archivo) al leer. ¡Entonces está vacío!

¿Qué más podemos saber sobre el archivo?

Averigüemos con el stat Mando:

/ dev / null 4

Esto nos dice que su tamaño es 0. También es bueno tener en cuenta que el permiso de lectura y escritura en el archivo está habilitado para todos, pero no se requiere permiso de ejecución.

¿Qué sucede con el tamaño del archivo cuando escribimos datos en él?

Intentemos esto:

/ dev / null 5

los cat El comando no devolvió nada y según el stat Command, su tamaño no ha cambiado.

Como se mencionó anteriormente, descarta todo lo que estaba escrito en él. Puede escribir tantos datos como desee, que se descartan inmediatamente para que el tamaño siempre permanezca 0: ¿singularidad?

En otras palabras, no puedes cambiar /dev/null

¿Es útil? Cómo usarlo

Sí, es muy útil y muy útil en muchos escenarios.

Teniendo en cuenta sus 2 propiedades más importantes (descarta todo lo escrito en él y devuelve EOF cuando se lee), examinemos sus casos de uso más comunes:

  1. Podemos descartar la salida (stdout) o error (stderr) de cualquier comando / script redireccionando a /dev/null

    Descartar salida estándar:/ dev / null 6

    descartar stderr:/ dev / null 7

    Como referencia, aquí hay un repaso rápido sobre los operadores de redireccionamiento:

    Redirigir stdout al archivo

    > file
    
    1> file

    Redirigir stderr al archivo

    2> file

    Redirigir stdout y stderr al archivo

    &> file
    
    > file 2>&1

    / dev / null 8

    Por lo tanto, es útil cuando ejecuta un comando / script y genera un resultado o un error que desea ignorar.

  2. Podemos vaciar un archivo (borrar el contenido de un archivo) editando la salida de. redireccionar /dev/null para

    / dev / null 9

  3. Podemos proporcionar una entrada nula o en blanco para un comando / script si es necesario

    < /dev/null

    Esto proporcionará una entrada nula o en blanco. En otras palabras, enviará inmediatamente un EOF al comando / script para que no espere una entrada.

    Observe que el operador de redireccionamiento < es para entrada (stdin).

    Por ejemplo: si queremos evitar el texto del correo electrónico en el comando de correo, podemos hacerlo usando:

    < /dev/null

    Ejemplo: $ mail -s hello [email protected] < /dev/null

¿Qué pasa si eliminamos / dev / null?

Entonces, ¿quieres ver las consecuencias de la extinción del agujero negro? : D

Bueno, intentemos ver si podemos eliminarlo primero.

Para eliminar un archivo, necesitamos acceso de escritura al directorio en el que se encuentra el archivo.

Comprobemos el permiso del directorio / dev:

/ dev / null 10

El primer carácter de la primera columna d denota que /dev es un registro.

Los siguientes caracteres son para el propietario, el grupo y otros: 3 caracteres cada uno.

El propietario tiene todos los permisos. rwx lo que significa que el propietario del directorio puede leer, escribir y buscar en el directorio. Tenga en cuenta que el permiso de escritura permite al propietario crear o eliminar archivos en el directorio.

Los permisos para grupos y otros son r-x Esto significa que los miembros del grupo y otros usuarios pueden leer y buscar en el directorio, pero no pueden crear ni eliminar archivos en él.

Intentemos eliminarlo ahora:

/ dev / null 11

Al parecer, no tiene permiso para borrar.

Sin embargo, el propietario o usuario con privilegios de root debería poder eliminarlo, ¿verdad?

Mantengamos esta parte como bricolaje y una pregunta de seguimiento por curiosidad:

¿Se volverá a crear automáticamente cuando se elimine?

Arranque su terminal y descubra, ¡todo lo mejor!

Los comandos utilizados en el artículo se resumen en el enlace siguiente.

Puede descargarlo directamente o ejecutarlo – BlackHole

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba