![Cómo ganar dinero rápido a través de Internet 2019](/f/a8679b93f685ab7b6fe27c84eb6e32ec.jpg?width=100&height=100)
En linux, todo es un archivo, incluso los dispositivos físicos como unidades de disco, CD/DVD ROM y disquetes se representan mediante archivos. Sin embargo, estos archivos no son archivos de datos regulares. En cambio, estos archivos especiales se denominan archivos de dispositivo y pueden generar o recibir los datos.
Por lo general, todos los archivos especiales están presentes bajo el /dev directorio. Algunos de los ejemplos comunes de archivos especiales son /dev/null, /dev/zero, /dev/full, y /dev/sr0.
Los archivos especiales pueden ser del tipo carácter o bloque. Como sugiere el nombre, los archivos de caracteres procesan un carácter a la vez, mientras que los archivos de bloque procesan varios caracteres a la vez.
En esta guía avanzada, discutiremos cómo crear un archivo de dispositivo usando el mknod dominio. Después de seguir esta guía, los usuarios de Linux podrán trabajar con confianza con diferentes tipos de archivos de dispositivos.
Tabla de contenido
La sintaxis de la mknod El comando es ligeramente diferente al otros comandos de Linux. La principal diferencia es que necesitamos especificar los números mayores y menores mientras creamos un personaje y bloqueamos los archivos del dispositivo:
$ mknod [OPCIONES] [MAYOR] [MENOR]...
En la sintaxis anterior, los corchetes ([])
representan los argumentos opcionales mientras que los corchetes angulares (<>)
representan los argumentos obligatorios.
En Linux, el número principal se usa para especificar el controlador de dispositivo que debe usarse. Este número se asigna al registrar un controlador de dispositivo.
De manera similar, el número menor se usa para especificar el dispositivo real. Podemos encontrar los números mayores y menores reservados en el Documentación del kernel de Linux.
En Linux, usamos tuberías para permitir la comunicación entre procesos. En Shell, la tubería se representa usando la línea vertical (|)
. Lee la salida del proceso anterior y la envía como entrada al siguiente proceso.
Entendamos esto con un ejemplo simple:
$ echo "tecmint.com" | wc-c.
En este ejemplo, estamos usando la tubería para leer la salida del comando de eco y enviarlo como entrada al comando wc para su posterior procesamiento.
Aquí, hemos utilizado la línea vertical (|)
para crear una tubería. Sin embargo, esto crea una tubería sin nombre y su alcance se limita solo al comando actual. En el siguiente ejemplo, veremos cómo crear una tubería con nombre.
Podemos usar el mknod Comando para crear una canalización con nombre. La canalización con nombre reside en el sistema de archivos como cualquier otro archivo normal. Sin embargo, su objetivo principal es permitir la comunicación entre procesos entre procesos no relacionados.
Primero, especifiquemos el tipo de dispositivo como pag
para crear una canalización con nombre:
$ mknod /tmp/named-pipe p. $ ls -l /tmp/tubería con nombre
Ahora, intentemos leer el archivo:
$ cat /tmp/tubería con nombre.
Aquí, podemos ver que el comando gato está esperando infinitamente:
A continuación, abramos otra terminal y escribamos algunos datos en la /tmp/named-pipe archivo:
$ echo "tecmint.com" > /tmp/tubería con nombre.
Finalmente, dirígete a la primera terminal para ver el resultado:
Aquí, podemos ver que el eco y gato los comandos pueden comunicarse mediante la canalización con nombre.
De manera similar, podemos usar el tipo de dispositivo como C
para crear un dispositivo de carácter. Sin embargo, debemos tener que usar los números mayores y menores al crear un dispositivo de carácter.
Usemos el ls comando para hallar los números mayor y menor de los /dev/full dispositivo:
$ ls -l /dev/completo.
En el resultado anterior, el par de números separados por comas, es decir, 1, 7 representan los números mayor y menor respectivamente.
En Linux, el /dev/full dispositivo siempre devuelve el No queda espacio en el error del dispositivo. Para entender esto, escribamos algunos datos en este dispositivo:
$ echo "tecmint.com" > /dev/full.
Ahora, usemos el mknod comando para crear un nuevo dispositivo que se comporte igual que /dev/full dispositivo:
$ sudo mknod /tmp/full-device c 1 7.
A continuación, cambiemos los permisos del archivo:
$ sudo chmod 666 /tmp/dispositivo completo $ ls -l /tmp/dispositivo completo.
Finalmente, escriba algunos datos en el dispositivo recién creado:
$ echo "tecmint" > /tmp/dispositivo completo.
Es importante tener en cuenta que el dispositivo de caracteres recién creado se comporta como el /dev/full dispositivo debido a los mismos números mayores y menores.
Además de esto, podemos especificar el tipo de dispositivo como b
para crear un dispositivo de bloque. Para crear un dispositivo de bloques debemos tener que usar los números mayores y menores.
En Linux, /dev/sr0 representa el CD/DVD-ROM dispositivo. Ahora, vamos a crear un nuevo dispositivo de bloque que se comporte igual que /dev/sr0.
Primero, averigüemos los números mayor y menor de la /dev/sr0:
$ ls -l /dev/sr0.
En el resultado anterior, podemos ver que sus números mayor y menor son 11 y 0 respectivamente.
Ahora, creemos un nuevo dispositivo de bloques con los mismos números mayores y menores:
$ sudo mknod /tmp/dvd-rom b 11 0. $ ls -l /tmp/dvd-rom
A continuación, montemos la imagen ISO del CD/DVD ROM en el /mnt directorio y verifique que la operación de montaje tenga éxito:
$ sudo mount /tmp/dvd-rom /mnt/ $ ls -1 /mnt/
En este ejemplo, podemos ver que el /tmp/dvd-rom dispositivo de bloque puede acceder a la imagen ISO desde el CD/DVD ROM.
A veces, necesitamos modificar el permiso de acceso del archivo del dispositivo antes de usarlo. En tales casos, tenemos que usar el chmod dominio. Sin embargo, podemos lograr el mismo resultado usando el mknod comando en lugar de usar dos comandos separados.
Para entender esto, usemos el -metro
opción para establecer permisos de acceso al crear una tubería con nombre:
$ sudo mknod -m 444 /tmp/pipe-with-permissions p.
Ahora, verifiquemos que los permisos se hayan configurado correctamente:
$ ls -l /tmp/tubería-con-permisos.
En este ejemplo, usamos el -metro
opción con la canalización con nombre. Sin embargo, también podemos usarlo con el personaje y los dispositivos de bloque.
¿Conoces algún otro mejor ejemplo de la mknod Comando en Linux? Háganos saber sus puntos de vista en los comentarios a continuación.