O que acontece se você excluir um arquivo de dispositivo?


21

Conheço aproximadamente os arquivos localizados em / dev.

Eu sei que existem dois tipos (caractere / bloco), acessar esses arquivos se comunica com um driver no kernel.

Quero saber o que acontece se eu excluir um - especificamente para os dois tipos de arquivo. Se eu excluir um arquivo de dispositivo de bloco, digamos /dev/sda, que efeito - se houver - isso tem? Acabei de desmontar o disco?

Da mesma forma, e se eu excluir /dev/mouse/mouse0- o que acontece? O mouse para de funcionar? Ele se substitui automaticamente?

Posso excluir esses arquivos? Se eu tivesse uma VM configurada, tentaria.


1
Eu apaguei / dev / zero em um sistema SVR4 uma vez. Péssima ideia. Trabalhei um pouco para inicializar meu sistema novamente.
Brad Lanam

Respostas:


30

Esses são simplesmente arquivos (especiais). Eles servem apenas como "ponteiros" para o dispositivo real. (ou seja, o módulo do driver dentro do kernel.)

Se algum comando / serviço já abriu esse arquivo, ele já possui um identificador para o dispositivo e continuará funcionando.

Se algum comando / serviço tentar abrir uma nova conexão, ele tentará acessar esse arquivo e falhará por causa de "arquivo não encontrado".

Geralmente esses arquivos são preenchidos por udev, o que os cria automaticamente na inicialização do sistema e em eventos especiais, como conectar um dispositivo USB, mas você também pode criar manualmente aqueles usando mknod.


3
Isto realmente não responder à pergunta ...
Gogeta70

"Geralmente esses arquivos são preenchidos pelo udev" Normalmente, mas no Linux. Existe um makedevcomando que geralmente faz o trabalho e, ao contrário udev, parece estar presente entre os sistemas operacionais mais parecidos com o Unix.
Sergiy Kolodyazhnyy

1
@ Gogeta70, que parte da pergunta este post deixa sem resposta?
Ruslan

@RonJohn A pergunta está etiquetada linuxeudev
Michael Mrozek

1
@ RonJohn Sim, mas com um "mas". O livro Ubuntu Hacks , que é do tipo '06, mostra que existe /etc/init.d/makedev. O manual do freebsd menciona MAKEDEV apareceu em 4.2BSD (de 1983). Eu acho que em 1983 seria tão lógico fazer MAKEDEVautomatizado via de inicialização como em 06
Sergiy Kolodyazhnyy

8

Os arquivos de dispositivo são na verdade um alias do sistema de arquivos para uma entrada na tabela de dispositivos do kernel. Se você olhar para os arquivos / dev com "ls -l", verá que eles têm um número de dispositivo principal e um número de dispositivo menor. Se você excluir os arquivos do sistema de arquivos, sempre poderá recriá-los usando as ferramentas apropriadas para vincular novamente o arquivo especial à entrada na tabela de dispositivos do kernel - consulte mknod (1).


3

A partir desse momento, eles só podem ser acessados ​​por programas que já tinham esses dispositivos abertos. Portanto, não há como desmontar sistemas de arquivos. E com o udev, uma reinicialização pode restaurar esses dispositivos. Uma maneira estranha de aprender unix.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.