Startseite » wie man » Was bedeutet alles ist eine Datei in Linux?

    Was bedeutet alles ist eine Datei in Linux?

    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.

    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 So drucken Sie den Inhalt dieser Datei auf das Terminal - Drucken Sie Ihre CPU-Informationen auf das Terminal. 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:

    • / proc / uptime - Zeigt die Verfügbarkeit Ihres Linux-Kernels an, mit anderen Worten, 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 Dienstprogramm zur Datenträgerpartitionierung 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 ihre 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. Betrachten Sie es als Mülleimer oder schwarzes Loch. Wenn Sie jemals einen Kommentar sehen, der Sie dazu auffordert, Beschwerden an / dev / null zu senden, ist dies eine verrückte 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.

    Zum Beispiel 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.

    Befehl> / dev / null

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

    Um den Inhalt einer Festplatte durch das Schreiben von 0 zu löschen, benötigen Sie kein spezielles Dienstprogramm, das sich dem Zero'ing eines Laufwerks widmet. 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 liest Nullen aus / dev / zero und schreibt sie direkt auf die erste Festplattenpartition Ihres Systems, 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 wenn = / dev / null von = / dev / sda1

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

    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 ein Stream 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 beide im Dateisystem. keine andere Form der Adressierung erforderlich.

    Natürlich sind manche Dinge keine 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.