Como criar arquivos de dispositivo no Linux usando o comando mknod
- 2083
- 580
- Enrique Crist
Em Linux, Tudo é um arquivo, mesmo dispositivos físicos, como unidades de disco, CD/DVD ROM e discos de disquete, são representados usando arquivos. No entanto, esses arquivos não são arquivos de dados regulares. Em vez disso, esses arquivos especiais são chamados de arquivos de dispositivo e podem gerar ou receber os dados.
Geralmente, todos os arquivos especiais estão presentes sob o /dev diretório. Alguns dos exemplos comuns de arquivos especiais são /dev/null, /dev/zero, /dev/completo, e /dev/sr0.
Os arquivos especiais podem ser do personagem ou bloco do tipo. Como o nome sugere, os arquivos do caractere processam um caractere em uma época em que, à medida que os arquivos do bloco processam vários caracteres por vez.
Neste guia avançado, discutiremos como criar um arquivo de dispositivo usando o mknod comando. Depois de seguir este guia, os usuários do Linux poderão trabalhar com diferentes tipos de arquivos de dispositivo com confiança.
Índice
1- Sintaxe do comando mknod
- 1. Crie tubo sem nome no Linux
- 2. Crie um tubo nomeado no Linux
- 3. Crie um arquivo de dispositivo de caractere no Linux
- 4. Crie um arquivo de dispositivo em bloco no Linux
- 5. Crie um arquivo de dispositivo com permissões
Sintaxe do comando mknod
A sintaxe do mknod O comando é um pouco diferente dos outros comandos do Linux. A principal diferença é que precisamos especificar os números maiores e menores, criando um personagem e arquivos de dispositivo de bloqueio:
$ mknod [opções] [major] [Minor]…
Na sintaxe acima, os colchetes ([])
representar os argumentos opcionais, enquanto suportes angulares ()
representar os argumentos obrigatórios.
No Linux, o número principal é usado para especificar o driver do dispositivo que precisa ser usado. Este número é atribuído ao registrar um driver de dispositivo.
De maneira semelhante, o número menor é usado para especificar o dispositivo real. Podemos encontrar os números maiores e menores reservados na documentação do kernel Linux.
1. Crie tubo sem nome no Linux
No Linux, usamos tubos para ativar a comunicação entre processos. No shell, o tubo é representado usando a linha vertical (|)
. Ele lê a saída do processo anterior e o envia como entrada para o próximo processo.
Vamos entender isso com um exemplo simples:
$ eco "Tecmint.com "| WC -C
Neste exemplo, estamos usando o tubo para ler a saída do comando Echo e enviá -lo como entrada para o comando WC para processamento adicional.
Aqui, usamos a linha vertical (|)
Para criar um tubo. No entanto, isso cria um tubo sem nome e seu escopo é limitado apenas ao comando atual. No próximo exemplo, veremos como criar um tubo nomeado.
2. Crie um tubo nomeado no Linux
Podemos usar o mknod comando para criar um tubo nomeado. O tubo nomeado reside no sistema de arquivos como qualquer outro arquivo regular. No entanto, seu principal objetivo é permitir a comunicação entre processos entre processos não relacionados.
Primeiro, vamos especificar o tipo de dispositivo como p
Para criar um tubo nomeado:
$ mknod /tmp /nome de nome p $ ls -l /tmp /named-pipe
Agora, vamos tentar ler o arquivo:
$ CAT /TMP /PIPE nomeado
Aqui, podemos ver que o comando do gato está esperando infinitamente:
Leia o arquivo de tubulação nomeadoEm seguida, vamos abrir outro terminal e escrever alguns dados para o /TMP/Nome-Pipe arquivo:
$ eco "Tecmint.com "> /tmp /nome de nome
Finalmente, vá até o primeiro terminal para ver o resultado:
Exibir arquivo de tubulação nomeadoAqui, podemos ver que o eco e gato Os comandos podem se comunicar usando o tubo nomeado.
3. Crie um arquivo de dispositivo de caractere no Linux
De maneira semelhante, podemos usar o tipo de dispositivo como c
Para criar um dispositivo de personagem. No entanto, devemos ter que usar os números maiores e menores ao criar um dispositivo de caractere.
Vamos usar o comando ls para encontrar o número maior e menor do /dev/completo dispositivo:
$ ls -l /dev /completoEncontre o número de arquivo maior e menor
Na saída acima, o par de números separado por vírgula.e. 1, 7 representar os números maiores e menores, respectivamente.
Em Linux, o /dev/completo dispositivo sempre retorna o Nenhum espaço deixou no erro do dispositivo. Para entender isso, vamos escrever alguns dados para este dispositivo:
$ eco "Tecmint.com "> /dev /completoEscreva dados no arquivo de dispositivo
Agora, vamos usar o mknod comando para criar um novo dispositivo que se comporte o mesmo que /dev/completo dispositivo:
$ sudo mknod /tmp /device completo c 1 7
Em seguida, vamos alterar as permissões de arquivo:
$ sudo chmod 666 /tmp /device completo $ ls -l /tmp /device completo
Por fim, escreva alguns dados para o dispositivo recém -criado:
$ echo "Tecmint"> /tmp /device completoCrie novo arquivo de dispositivo
É importante observar que o dispositivo de personagem recém -criado se comporta como o /dev/completo dispositivo por causa dos mesmos números maiores e menores.
4. Crie um arquivo de dispositivo em bloco no Linux
Além disso, podemos especificar o tipo de dispositivo como b
Para criar um dispositivo de bloco. Para criar um dispositivo de bloco, precisamos usar os números maiores e menores.
Em Linux, /dev/sr0 representa o CD/DVD ROM dispositivo. Agora, vamos criar um novo dispositivo de bloco que se comporte o mesmo que /dev/sr0.
Primeiro, vamos descobrir o número maior e menor do /dev/sr0:
$ ls -l /dev /sr0Verifique o arquivo de dispositivo Maiores e pequenos números
Na saída acima, podemos ver que seus números maiores e menores são 11 e 0 respectivamente.
Agora, vamos criar um novo dispositivo de bloco com os mesmos números maiores e menores:
$ sudo mknod /tmp /dvd-rom b 11 0 $ ls -l /tmp /dvd-romCrie um novo dispositivo de bloco
Em seguida, vamos montar a imagem ISO do CD/DVD ROM para o /mnt diretório e verifique se a operação de montagem é bem -sucedida:
$ sudo montagem /tmp /dvd -rom /mnt /$ ls -1 /mnt /Montar um novo dispositivo de bloco
Neste exemplo, podemos ver que o /tmp/dvd-rom O dispositivo de bloco pode acessar a imagem ISO do CD/DVD ROM.
5. Crie um arquivo de dispositivo com permissões
Às vezes, precisamos modificar a permissão de acesso do arquivo de dispositivo antes de usá -lo. Nesses casos, temos que usar o chmod comando. No entanto, podemos alcançar o mesmo resultado usando o mknod comando em vez de usar dois comandos separados.
Para entender isso, vamos usar o -m
opção para definir permissões de acesso ao criar um tubo nomeado:
$ sudo mknod -m 444 /tmp /tubo-with-permissões p
Agora, vamos verificar se as permissões foram definidas corretamente:
$ ls -l /tmp /tubo-with-permissõesCrie arquivo de dispositivo com permissões
Neste exemplo, usamos o -m
opção com o tubo nomeado. No entanto, podemos usá -lo com o personagem e os dispositivos de bloqueio também.
Você conhece qualquer outro melhor exemplo do mknod comando no linux? Deixe -nos saber suas opiniões nos comentários abaixo.
- « Distribuições principais do Linux para estudantes em 2023
- Como obter alertas de e -mail de login SSH raiz e usuário »