Що станеться, якщо ви видалите файл пристрою?


21

Я приблизно знаю про файли, розташовані під / dev.

Я знаю, що існує два типи (символ / блок), доступ до цих файлів спілкується з драйвером у ядрі.

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

Так само, що робити, якщо видалити /dev/mouse/mouse0- що трапиться? Миша перестає працювати? Це автоматично замінює себе?

Чи можу я навіть видалити ці файли? Якби у мене був встановлений VM, я б спробував це.


1
Я видалив / dev / zero у системі SVR4 один раз. Погана ідея. Взяв трохи роботи, щоб знову запустити систему.
Бред Ланам

Відповіді:


30

Це просто (спеціальні) файли. Вони служать лише «покажчиками» на фактичний пристрій. (тобто модуль драйвера всередині ядра.)

Якщо якась команда / служба вже відкрила цей файл, він вже має ручку до пристрою і продовжить працювати.

Якщо якась команда / служба намагається відкрити нове з'єднання, вона спробує отримати доступ до цього файлу і вийти з ладу через "файл не знайдено".

Зазвичай ці файли заповнюються udev, що автоматично створює їх при запуску системи та на спеціальних подіях, таких як підключення USB-пристрою, але ви також можете їх створити вручну, використовуючи mknod.


3
Це насправді не відповідає на питання ...
Gogeta70

"Зазвичай ці файли заповнюються udev" Зазвичай, але в Linux. Існує makedevкоманда, яка зазвичай виконує цю роботу, і на відміну від udevцього, здається, присутня серед більшості unix-подібних ос.
Сергій Колодяжний

1
@ Gogeta70, яку частину запитання ця публікація не залишає без відповіді?
Руслан

@RonJohn Питання позначене тегами linuxіudev
Michael Mrozek

1
@RonJohn Так, але з "але". Книга Ubuntu Hacks, яка схожа на '06 показує, є /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.