Was bedeutet "alles ist eine Datei" in Linux?

Inhaltsverzeichnis:

Was bedeutet "alles ist eine Datei" in Linux? - Blog 2023
Was bedeutet "alles ist eine Datei" in Linux? - Blog 2023
Anonim
Eine der entscheidenden Funktionen von Linux und anderen UNIX-ähnlichen Betriebssystemen ist, dass "alles eine Datei" ist. Dies ist eine Vereinfachung, aber wenn Sie wissen, was es bedeutet, können Sie verstehen, wie Linux funktioniert.
Eine der entscheidenden Funktionen von Linux und anderen UNIX-ähnlichen Betriebssystemen ist, dass "alles eine Datei" ist. Dies ist eine Vereinfachung, aber wenn Sie wissen, was es bedeutet, können Sie verstehen, wie Linux funktioniert.

Viele Dinge unter Linux werden in Ihrem Dateisystem angezeigt, sind jedoch keine Dateien. Hierbei handelt es sich um spezielle Dateien, die Hardwaregeräte, Systeminformationen und andere Dinge darstellen - einschließlich eines Zufallszahlengenerators.

Diese speziellen Dateien können sich in Pseudo- oder virtuellen Dateisystemen befinden, wie zum Beispiel / dev, das spezielle Dateien enthält, die Geräte repräsentieren, und / proc, die spezielle Dateien enthält, die System- und Prozessinformationen darstellen.

/ proc

Angenommen, Sie möchten Informationen zu Ihrer CPU finden. Das Verzeichnis / proc enthält eine spezielle Datei - / proc / cpuinfo -, die diese Informationen enthält.

Image
Image

Sie benötigen keinen speziellen Befehl, der Sie über Ihre CPU-Informationen informiert. Sie können den Inhalt dieser Datei einfach mit einem Standardbefehl lesen, der mit Nur-Text-Dateien arbeitet. Beispielsweise können Sie den Befehl verwenden cat / proc / cpuinfo um den Inhalt dieser Datei an das Terminal zu drucken - die CPU-Informationen an das Terminal zu drucken. Sie können sogar / proc / cpuinfo in einem Texteditor öffnen, um dessen Inhalt anzuzeigen.

Denken Sie daran, dass / proc / cpuinfo keine Textdatei ist, die diese Informationen enthält - der Linux-Kernel und das proc-Dateisystem stellen uns diese Informationen als Datei zur Verfügung. Dies ermöglicht uns die Verwendung bekannter Werkzeuge zum Anzeigen und Bearbeiten der Informationen.

Das Verzeichnis / proc enthält auch andere ähnliche Dateien, zum Beispiel:
Das Verzeichnis / proc enthält auch andere ähnliche Dateien, zum Beispiel:
  • / proc / uptime - Zeigt die Verfügbarkeit Ihres Linux-Kernels an, dh wie lange Ihr System eingeschaltet war, ohne herunterzufahren.
  • / proc / version - Zeigt die Version Ihres Linux-Kernels an.

/ dev

Im Verzeichnis / dev finden Sie Dateien, die Geräte repräsentieren, sowie Dateien, die andere Besonderheiten darstellen. Beispielsweise ist / dev / cdrom Ihr CD-ROM-Laufwerk. / dev / sda steht für Ihre erste Festplatte, während / dev / sda1 die erste Partition auf Ihrer ersten Festplatte darstellt.

Möchten Sie Ihre CD-ROM einhängen? Führen Sie den Mount-Befehl aus und geben Sie / dev / cdrom als das Gerät an, das Sie einhängen möchten. Möchten Sie Ihre erste Festplatte partitionieren? Führen Sie ein Festplattenpartitionierungsprogramm aus, und geben Sie / dev / sda als zu bearbeitende Festplatte an. Möchten Sie die erste Partition auf Ihrer ersten Festplatte formatieren? Führen Sie einen Formatierungsbefehl aus und geben Sie an, / dev / sda1 zu formatieren.

Wie Sie sehen, hat die Bereitstellung dieser Geräte als Teil des Dateisystems Vorteile. Das Dateisystem bietet einen konsistenten "Namensraum", den alle Anwendungen zur Adressierung und zum Zugriff auf die Geräte verwenden können.
Wie Sie sehen, hat die Bereitstellung dieser Geräte als Teil des Dateisystems Vorteile. Das Dateisystem bietet einen konsistenten "Namensraum", den alle Anwendungen zur Adressierung und zum Zugriff auf die Geräte verwenden können.

/ dev / null, / dev / random und / dev / zero

Das Dateisystem / dev enthält nicht nur Dateien, die physische Geräte darstellen. Hier sind drei der bemerkenswertesten Spezialgeräte, die es enthält:

  • / dev / null - Verwirft alle Daten, die in ihn geschrieben werden - als Mülleimer oder schwarzes Loch. Wenn Sie jemals einen Kommentar sehen, der Sie dazu auffordert, Beschwerden an / dev / null zu senden - das ist eine schräge Art zu sagen: "Werfen Sie sie in den Papierkorb."
  • / dev / random - Erzeugt Zufälligkeiten unter Verwendung von Umgebungsgeräuschen. Es ist ein Zufallszahlengenerator, auf den Sie zugreifen können.
  • / dev / zero - Erzeugt Nullen - einen konstanten Strom von Nullen.

Wenn Sie sich diese drei als Dateien vorstellen, werden Sie für sie keine Verwendung finden. Betrachten Sie sie stattdessen als Werkzeuge.

Beispielsweise erzeugen Linux-Befehle standardmäßig Fehlermeldungen und andere Ausgaben, die sie an die Standardausgabe, normalerweise das Terminal, ausgeben. Wenn Sie einen Befehl ausführen möchten und sich nicht für seine Ausgabe interessieren, können Sie diese Ausgabe nach / dev / null umleiten. Durch das Umleiten der Befehlsausgabe nach / dev / null wird diese sofort verworfen. Anstatt, dass jeder Befehl seinen eigenen "stillen Modus" implementiert, können Sie diese Methode mit jedem Befehl verwenden.

command > /dev/null

Wenn Sie eine Zufallsquelle benötigen - zum Beispiel zum Erzeugen eines Verschlüsselungsschlüssels, müssen Sie keinen eigenen Zufallszahlengenerator schreiben -, Sie könnten / dev / random verwenden.
Wenn Sie eine Zufallsquelle benötigen - zum Beispiel zum Erzeugen eines Verschlüsselungsschlüssels, müssen Sie keinen eigenen Zufallszahlengenerator schreiben -, Sie könnten / dev / random verwenden.

Um den Inhalt einer Festplatte zu löschen, indem Sie 0 schreiben, benötigen Sie kein spezielles Dienstprogramm, das für das Nullstellen eines Laufwerks bestimmt ist. Sie können die Standarddienstprogramme und / dev / zero verwenden. Zum Beispiel die dd Befehl liest von einem Ort und schreibt an einen anderen Ort. Der folgende Befehl würde Nullen aus / dev / zero lesen und sie direkt auf die erste Festplattenpartition Ihres Systems schreiben, wodurch der Inhalt vollständig gelöscht wird.

(Warnung: Dieser Befehl löscht alle Daten Ihrer ersten Partition, wenn Sie sie ausführen. Führen Sie diesen Befehl nur aus, wenn Sie Daten zerstören möchten.)

dd if=/dev/zero of=/dev/sda1

Hier verwenden wir dd mit speziellen Dateien (/ dev / zero und / dev / sda1), aber wir könnten dd auch zum Lesen und Schreiben von tatsächlichen Dateien verwenden. Derselbe Befehl kann sowohl zum direkten Manipulieren von Geräten als auch zum Arbeiten mit Dateien verwendet werden.

Klärung

In der Praxis ist es genauer zu sagen, dass "alles ein Strom von Bytes ist" als "alles ist eine Datei". / Dev / random ist keine Datei, aber es ist sicherlich ein Strom von Bytes.Und obwohl diese Dinge technisch keine Dateien sind, sind sie im Dateisystem zugänglich - das Dateisystem ist ein universeller "Namensraum", in dem alles zugänglich ist. Möchten Sie auf einen Zufallszahlengenerator zugreifen oder direkt von einem Gerät lesen? Sie finden beides im Dateisystem. keine andere Form der Adressierung erforderlich.

Natürlich handelt es sich bei einigen Dingen nicht um Dateien - Prozesse, die auf Ihrem System ausgeführt werden, sind nicht Teil des Dateisystems. „Alles ist eine Datei“ist ungenau, aber viele Dinge verhalten sich wie Dateien.

Beliebtes Thema

Fachberatung