GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Unter Linux ist alles eine Datei – Teil 1

Unterteilt in 2 Teile, werde ich in diesem ersten Teil das Konzept vorstellen, dass alles eine Datei ist, und die speziellen Geräte /dev/null, /dev/zero, /dev/random vorstellen und /dev/full . Teil 2 wird didaktisch interessante Features dazu vorstellen, zB wie man aus einer Datei eine Partition macht!

Einführung

  • Was ist das?

Everything is File ist das Konzept, wie das System alles aufzeichnet und in seiner Struktur behält. Im Gegensatz zu anderen Betriebssystemen behandeln UNIX-ähnliche Betriebssysteme alles als gemeinsame Datei.

Das bedeutet, dass nicht nur Partitionen als Dateien gemountet werden, sondern auch Verzeichnisse bestimmter Geräte wie RAM, Smartphones, externe Festplatten, und optische Datenträger sind alle Dateien. Außerdem sind Sockets und Pipes auch Dateien!

Außerdem jedes TTY-Terminal – die die Sie mit STRG ALT F1 öffnen – sind „Dateien“ in den Augen des Systems.

Verzeichnis /dev

Wenn Sie das /dev-Verzeichnis durchsuchen, sehen Sie alle Dateien, die System-Mounts relativ zu anderen Medien entsprechen. Es ist, als ob Sie ein Mobiltelefon an den Computer, eine externe Festplatte oder sogar einen USB-Stick anschließen und alles zu einer „Datei“ für das Betriebssystem
wird
Systempartitionen sind die Dateien, die mit „sd beginnen “ im /dev-Ordner. Im selben Ordner sind TTYs TeleTypewriter-Geräte, das Shell-Terminal, auf das mit „CTRL ALT F1 zugegriffen wird " Befehl. Auch die vom optischen Mediensystem (DVD, CD usw.) verwendeten Montageblöcke sind in diesem Ordner bereits in den Dateien „loop“ aufgeführt “.

Spezialgeräte

Die größte Kuriosität dieses Beitrags sind diese 4 kleinen Dateien im Ordner /dev:  full, zero, random und null. Können Sie die Funktion der einzelnen unterscheiden? Gemeinsam ist ihnen, dass es sich um „besondere Dateien“ handelt ” und nicht bloße Verzeichnisse.

Gerät Null:/dev/null

Das Null-Gerät (device null) wird normalerweise verwendet, um den Ausgabestrom eines Prozesses zu verwerfen, dessen Ergebnis aus irgendeinem Grund keine Rolle spielt. Es dient auch als leere praktische Datei. Normalerweise wird dieser Vorgang über einen Umleitungsbefehl auf der Systemkonsole ausgeführt. Jede Datei, die an das Gerät „/dev/null“ gesendet wird, wird aufgrund der Art und Weise, wie es funktioniert, für immer verschwinden und die Daten sofort löschen.

Es ist wie ein großes schwarzes Loch, ein Müll, der sich nie füllt.

​Poetisch machen Programmierer wegen dieser Besonderheit viele Witze über /dev/null.

Probieren Sie den folgenden Befehl aus:$ echo „Hello World“ Sie sehen „Hello World“ als Befehlsausgabe.

Versuchen Sie jetzt:

$ echo “Hello World”> /dev/null

Gibt eine leere Ausgabe zurück. Das heißt, es wird nichts passieren.

Denn die Befehlsausgabe „Hallo Welt“ ging ins Nirgendwo.
Sie wurde von einem Schwarzen Loch verschluckt.

Er besuchte Courage, den feigen Hund im Nirgendwo! Oder an jedem anderen verrückten Ort, den Ihre Vorstellungskraft zulässt.

​/dev/null für UNIX-basierte Systeme funktioniert wie ein schwarzes Loch:

Was dorthin gesendet wird, kommt nicht zurück! Abgesehen von den Witzen, im Grunde wurde die Befehlsausgabe des Prozesses nicht gespeichert, sondern direkt verworfen, als wäre sie nie generiert worden.

Gerät voll:/dev/full

Unter Linux ist das immer volle Gerät eine spezielle Datei, die immer denselben Fehlercode zurückgibt, wenn darauf zum Schreiben zugegriffen wird:ENOSPC – was bedeutet „Auf dem Gerät ist kein Speicherplatz verfügbar “.

Darüber hinaus hat es noch eine weitere Funktion:Da es immer voll ist, stellt es jedem Prozess, der darauf lesend zugreift, unendlich viele Nullzeichen (NULL) zur Verfügung. Dieses Gerät wird häufig verwendet, um das Verhalten eines Programms zu testen, wenn ein Fehler aufgrund einer vollen Speicherdiskette auftritt!

Probieren Sie den folgenden Befehl aus:$ echo „Hello world“> /dev/fullEr gibt diesem Gerät einen Vollfehler und imitiert eine überfüllte Festplatte!
bash: Echo:Schreibfehler:Kein Platz mehr auf Gerät

Zero-Gerät:/dev/zero

Auf Unix-ähnlichen Betriebssystemen ist /dev/zero eine spezielle Datei, die angibt, wie viele Nullzeichen daraus gelesen werden – die NULL der ASCII-Tabelle, 0x00; und nicht das Zeichen „Nullstelle“, „0“, dessen Wert 0x30– ist.

Der von diesem Gerät erzeugte Nullzeichenstrom kann beispielsweise verwendet werden, um Informationen auf einer Festplatte zu überschreiben (um sie zu bereinigen) oder um eine saubere Datei der Größe X bis unendlich zu erzeugen. Das BSD-System verwendet es, indem es Shared Memory über die mmap-Funktion implementiert, die /dev / zero auf RAM abbildet.

Erstellt eine große leere Datei namens „test“:

$ dd if=/dev/ zero of=/home/
$ USER /test count=1000 bs=1000

Wenn Sie dem Befehl keine Begrenzung auferlegen und „dd if=/dev/zero of=/home / $ USER/test“ erhalten, sehen Sie eine Datei, die bis ins Unendliche fett wird; es hört nur auf zu wachsen, wenn das Festplattenlaufwerk voll ist, was zu einem „Kein Speicherplatz verfügbar“-Fehler führt.

Dieser Befehl ist interessant, wenn Sie einen USB-Stick wiederherstellen möchten, dessen Partitionstabelle beschädigt und nicht wiederherstellbar ist. Die dd Der Befehl erzwingt das Schreiben, und /dev /zero füllt jeden Speicherblock mit Nullen. Sie befindet sich in einem neu hergestellten Zustand, sodass Sie später ein Programm wie Disks oder Gparted verwenden müssen, um Ihre Partitionstabelle neu zu erstellen!

Seien Sie vorsichtig mit diesem Befehl, wenn die Ausgabe =/dev /sda1 ist, werden Sie Ihre gesamte sda1-Festplatte auf Null setzen (sie mit Nullen füllen), wodurch die Dateien nicht wiederherstellbar sind.

Zufälliges Gerät:/dev/random

Es funktioniert, indem es dieselbe Logik wie /dev/zero verwendet, aber eine Festplatte füllt oder eine Datei der Größe n mit zufälligen Werten erstellt, die durch Computerverarbeitung generiert werden, GPU-Informationszeichen sammeln, RAM-Speicher und so weiter.

/Dev/random sollte für Anwendungen geeignet sein, die qualitativ hochwertige Zufallszahlen erfordern, wie z. B. ein One-Time-Pad oder die Generierung öffentlicher Schlüssel für SSH und andere Sharing-Netzwerke.

Schnelle Neugier!

Was passiert, wenn wir das Nirgendwo hinschicken? Das heißt, wenn wir den Inhalt von /dev/zero an /dev/null

senden
$ sudo dd if =/dev/zero of=/dev/null

Dieser Befehl erzeugt eine Datei, die gegen Unendlich tendiert, die im unendlichen Weltraumgerät – unserem schwarzen Loch! – aufgezeichnet wird. In der Praxis werden die Hardwareplatten nicht beschädigt, da keine Daten tatsächlich generiert und auf die Platte geschrieben werden. Aber aus der Perspektive des Kernels gibt es dort eine Datenübertragung:Es wird einen hohen CPU-Verbrauch erzeugen, der einen der Kerne auswählt, um eine solche Verarbeitung zu erzeugen, die 100 % Auslastung belegt.

Dieser Befehlstyp wird zum Beispiel für Leistungstests verwendet, um zu überprüfen, wie sich der Computer mit der CPU bei 100 % Auslastung verhält.

Schlussfolgerung

In diesem Beitrag haben Sie mehr Details darüber erfahren, wie UNIX-basierte Systeme Geräte erkennen und wie alles „Datei“ ist. Sie wussten auch Details über die speziellen Geräte.

Im nächsten Beitrag der Serie werde ich über einige interessante Dienstprogramme für diese Geräte sprechen, zum Beispiel das Erstellen einer Partition aus einer Datei, neben anderen Kuriositäten, die ich nicht kommentieren möchte, um nicht zu verderben!


Linux
  1. So verschieben Sie eine Datei unter Linux

  2. Grundlegendes zu Linux-Dateiberechtigungen

  3. Linux – Alles ist eine Datei?

  4. Teil einer Datei sortieren?

  5. Was ist eine Alternative zur Everything-Suche für Linux?

Stat-Befehl unter Linux

Linux-Dateikomprimierung:Alles, was Sie wissen müssen

Linux-Dateiberechtigungen:Alles, was Sie wissen müssen

Unter Linux ist alles eine Datei – Teil 2

So fügen Sie unter Linux ein neues Gerät zum BTRFS-Dateisystem hinzu

Von Linux-Systemadministratoren häufig verwendete Linux-Befehle – Teil 5