¿El archivo / dev / null realmente tiene un tamaño fijo?

23

Acabo de descubrir que /dev/nulles un archivo y no un directorio.

Me pregunto si tiene un tamaño de archivo real.

Cody
fuente

Respuestas:

35

/dev/nullNo es realmente un archivo. ¡Es un dispositivo de personajes !

$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Apr 10 09:53 /dev/null

La primera letra cde la cadena de permisos ( crw-rw-rw-) indica esto. Para los archivos normales, sería un -lugar.

Entonces, en palabras fáciles: /dev/nullno es un archivo sino un dispositivo virtual asignado a esta ruta en el sistema de archivos, que tiene el único propósito de tragar y desvanecer datos, como un agujero negro.
Sin embargo, también se puede usar como entrada, luego actúa como un archivo vacío (tamaño 0) e inmediatamente devuelve un EOF (Fin del archivo).

Por lo tanto, no puede decir realmente que /dev/nulltiene un tamaño de archivo específico, ya que no es un archivo normal en ningún medio de almacenamiento.

Byte Commander
fuente
¿Entrada? ¿Qué proporciona una lista interminable de caracteres NUL?
Jonathon
@JonathonWisnoski No sé exactamente y nunca lo usé así, así que solo puedo darle este enlace a una pregunta en StackOverflow donde se explica.
Byte Commander
77
@JonathonWisnoski, no: se comporta como un archivo de tamaño cero en la entrada, por lo que la primera lectura informa que el archivo está en EOF.
godlygeek
Sí, eso es correcto.
godlygeek
3
@JonathonWisnoski mira / dev / zero para eso.
Paŭlo Ebermann
16

/dev/nulles un tipo especial de archivo llamado " archivo de dispositivo ".

Los archivos del dispositivo actúan como una interfaz para algunas funciones del núcleo. Solo ocupan el espacio que se necesita para una entrada de directorio (" inodo ") pero no tienen ningún contenido real y no tienen un tamaño de archivo real.

Otros archivos del dispositivo son, por ejemplo, /dev/sda(generalmente un HDD o SSD), /dev/zero(un archivo que genera ceros cuando se lee) o /dev/random(un archivo que genera datos aleatorios cuando se lee). En realidad, todos los archivos /dev/son archivos del dispositivo o enlaces que apuntan a los archivos del dispositivo.

Florian Diesch
fuente
Si bien la mayoría de esta respuesta es correcta (+1), creo que es un poco engañoso decir que ocupan el tamaño de una entrada de inodo. O bien no ocupan espacio, si se refieren al espacio en disco, o toman más, si se refieren a toda su implementación como dispositivos de caracteres.
kos
2
Al igual que cualquier otro archivo, un archivo de dispositivo necesita un inodo que almacena el propietario, los permisos, el número mayor / menor y otros metadatos. Depende del sistema de archivos cómo y dónde se almacenan estos inodes (puede usar mknodpara crear archivos de dispositivo en cualquier lugar que desee). Para sistemas de archivos virtuales como /dev/el inodo no ocupa espacio en disco sino algo de memoria.
Florian Diesch
Exactamente. Creo que no me expresé bien, así que déjame reformularlo. Quizás lo que estoy señalando es un poco exigente, así que perdóname por eso. Lo que quise decir es que si declara que cada dispositivo de caracteres ocupa algo de espacio en la memoria debido a su entrada de inodo, tal vez desee señalar que las funciones que se invocarán en lectura / escritura en dicho dispositivo, que se cargan junto con ellas, así también.
kos
¿Es realmente correcto decir que un archivo ocupa el espacio ocupado por su entrada de tabla de inodo? No creo que esto se incluya generalmente en lo que las personas, y las personas de software han escrito, quieren decir cuando hablan sobre el tamaño del archivo. En particular, preguntar lsy dureportar el tamaño de un dispositivo especial de carácter como /dev/nullo /dev/randomproduce 0 .
Eliah Kagan
Lo siento, pero rechacé esta respuesta, porque a menos que alguien demuestre que estoy equivocado en lo que he dicho (que podría ser), sigo pensando que no es correcto afirmar que un dispositivo de caracteres ocupa el espacio de una entrada de inodo.
kos