Что произойдет, если вы удалите файл устройства?


21

Я примерно знаю о файлах, расположенных в / dev.

Я знаю, что есть два типа (символ / блок), доступ к этим файлам связывается с драйвером в ядре.

Я хочу знать, что произойдет, если я удалю один - специально для обоих типов файлов. Если я удалю файл блочного устройства, скажем /dev/sda, какой эффект - если таковой имеется - это имеет? Я только что размонтировал диск?

Точно так же, что, если я удаляю /dev/mouse/mouse0- что происходит? Мышь перестает работать? Это автоматически заменяет себя?

Могу ли я удалить эти файлы? Если бы у меня была настроена виртуальная машина, я бы попробовал.


1
Я удалил / dev / zero в системе SVR4 один раз. Плохая идея. Потребовалось немного работы, чтобы снова загрузить мою систему.
Брэд Ланам

Ответы:


30

Это просто (специальные) файлы. Они служат только «указателями» на фактическое устройство. (т.е. модуль драйвера внутри ядра.)

Если какая-то команда / служба уже открыла этот файл, он уже имеет дескриптор устройства и продолжит работу.

Если какая-либо команда / служба пытается открыть новое соединение, она попытается получить доступ к этому файлу и потерпит неудачу из-за «файл не найден».

Обычно эти файлы заполняются udev, что автоматически создает их при запуске системы и при особых событиях, таких как подключение к USB-устройству, но вы также можете создать их вручную mknod.


3
Это на самом деле не отвечает на вопрос ...
Gogeta70

«Обычно эти файлы заполняются udev» Обычно, но в Linux. Есть makedevкоманда, которая обычно выполняет свою работу и, в отличие от udevнее, кажется, присутствует среди большинства unix-подобных ОС.
Сергей Колодяжный

1
@ Gogeta70, какую часть вопроса оставляет этот пост без ответа?
Руслан

@RonJohn Вопрос помечен linuxиudev
Михаил Мрозек

1
@RonJohn Да, но с "но". Книга Ubuntu Hacks, написанная в 2006 году, показывает, что она есть /etc/init.d/makedev. В руководстве по freebsd упоминается MAKEDEV, появившийся в 4.2BSD (с 1983 года). Я думаю, что в 1983 году было бы так же логично сделать MAKEDEVавтоматизацию через init, как и в 06
Сергей Колодяжный,

8

Файлы устройств на самом деле являются псевдонимами файловой системы для записи в таблице устройств ядра. Если вы посмотрите на файлы / dev с помощью «ls -l», то увидите, что у них есть основной номер устройства и дополнительный номер устройства. Если вы удаляете файлы из файловой системы, вы всегда можете воссоздать их, используя соответствующие инструменты, чтобы связать специальный файл с записью в таблице устройств ядра - см. Mknod (1).


3

С этого момента они могут быть доступны только тем программам, которые уже открыли эти устройства. Таким образом, это не способ размонтировать файловые системы. А с помощью udev перезагрузка может восстановить эти устройства. Странный способ изучения Unix.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.