Was passiert, wenn Sie eine Gerätedatei löschen?

21

Ich kenne ungefähr die Dateien unter / dev.

Ich kenne zwei Typen (Zeichen / Block). Der Zugriff auf diese Dateien erfolgt über einen Treiber im Kernel.

Ich möchte wissen, was passiert, wenn ich eine lösche - speziell für beide Dateitypen. Sagen wir /dev/sda, wenn ich eine Block-Gerätedatei lösche , welche Auswirkung hat dies, wenn überhaupt? Habe ich gerade die Festplatte abgemeldet?

/dev/mouse/mouse0Was passiert , wenn ich lösche ? Funktioniert die Maus nicht mehr? Ersetzt es sich automatisch selbst?

Kann ich diese Dateien überhaupt löschen? Wenn ich eine VM eingerichtet hätte, würde ich es versuchen.

Alpha
quelle
1
Ich habe / dev / zero auf einem SVR4-System einmal gelöscht. Schlechte Idee. Es hat ein bisschen Arbeit gekostet, mein System wieder bootfähig zu machen.
Brad Lanam

Antworten:

30

Das sind einfach (spezielle) Dateien. Sie dienen nur als "Zeiger" auf das eigentliche Gerät. (dh das Treibermodul im Kernel.)

Wenn ein Befehl / Dienst diese Datei bereits geöffnet hat, hat er bereits ein Handle für das Gerät und wird weiterarbeiten.

Wenn ein Befehl / Dienst versucht, eine neue Verbindung herzustellen, versucht er, auf diese Datei zuzugreifen, und schlägt fehl, weil "Datei nicht gefunden".

In der Regel werden diese Dateien mit Daten gefüllt udev, die automatisch beim Systemstart und bei besonderen Ereignissen wie dem Anschließen eines USB-Geräts erstellt werden. Sie können diese Dateien jedoch auch manuell erstellen mknod.

michas
quelle
3
Dies beantwortet nicht wirklich die Frage ...
Gogeta70
"Normalerweise werden diese Dateien von udev gefüllt" Normalerweise, aber unter Linux. Es gibt einen makedevBefehl, der normalerweise die Aufgabe erfüllt, und im Gegensatz zu udevihm scheint er unter den meisten Unix-ähnlichen Betriebssystemen vorhanden zu sein.
Sergiy Kolodyazhnyy
1
@ Gogeta70 Welchen Teil der Frage lässt dieser Beitrag unbeantwortet?
Ruslan
@ RonJohn Die Frage ist markiert linuxundudev
Michael Mrozek
1
@ RonJohn Ja, aber mit einem "aber". Das Ubuntu Hacks- Buch aus dem Jahr 2006 zeigt, dass es das gibt /etc/init.d/makedev. Das freebsd-Handbuch erwähnt MAKEDEV in 4.2BSD (ab 1983). Ich denke, 1983 wäre es genauso logisch, MAKEDEVüber init zu automatisieren wie in 06
Sergiy Kolodyazhnyy
8

Gerätedateien sind eigentlich ein Dateisystem-Alias ​​für einen Eintrag in der Gerätetabelle des Kernels. Wenn Sie sich die / dev-Dateien mit "ls -l" ansehen, werden Sie sehen, dass sie eine Hauptgerätenummer und eine Nebengerätenummer haben. Wenn Sie die Dateien aus dem Dateisystem löschen, können Sie sie jederzeit mit den entsprechenden Tools neu erstellen, um die spezielle Datei erneut mit dem Eintrag in der Kernel-Gerätetabelle zu verknüpfen - siehe mknod (1).

Stephen M. Webb
quelle
3

Von diesem Moment an können sie nur von Programmen aufgerufen werden, auf denen diese Geräte bereits geöffnet waren. Es ist also nicht möglich, Dateisysteme abzuhängen. Und mit udev können diese Geräte durch einen Neustart wiederhergestellt werden. Eine seltsame Art, Unix zu lernen.

Gerard H. Pille
quelle