29Jul
Eines der bestimmenden Merkmale von Linux und anderen UNIX-ähnlichen Betriebssystemen ist, dass "alles eine Datei ist". Dies ist eine zu starke Vereinfachung, aber zu verstehen, was es bedeutet, wird Ihnen helfen zu verstehen, wie Linux funktioniert.
Viele Dinge unter Linux erscheinen in Ihrem Dateisystem, aber sie sind keine Dateien. Sie sind spezielle Dateien, die Hardwaregeräte, Systeminformationen und andere Dinge darstellen - einschließlich eines Zufallszahlengenerators.
Diese speziellen Dateien befinden sich möglicherweise in Pseudo- oder virtuellen Dateisystemen wie / dev, die spezielle Dateien enthalten, die Geräte darstellen, und / proc, das spezielle Dateien enthält, die System- und Prozessinformationen darstellen.
/ proc
Nehmen wir beispielsweise an, Sie möchten Informationen über Ihre CPU finden. Das Verzeichnis / proc enthält eine spezielle Datei - /proc/ cpuinfo -, die diese Informationen enthält.
Sie benötigen keinen speziellen Befehl, der Ihnen Ihre CPU-Informationen mitteilt - Sie können den Inhalt dieser Datei einfach mit jedem Standardbefehl lesen, der mit Nur-Text-Dateien arbeitet. Sie können zum Beispiel den Befehl
cat /proc/ cpuinfo verwenden, um den Inhalt dieser Datei auf das Terminal zu drucken und Ihre CPU-Informationen auf dem Terminal auszugeben. Sie könnten /proc/ cpuinfo sogar in einem Texteditor öffnen, um dessen Inhalt anzuzeigen.Denken Sie daran, /proc/ cpuinfo ist eigentlich keine Textdatei, die diese Informationen enthält - der Linux-Kernel und das proc-Dateisystem geben uns diese Informationen als Datei frei. Dadurch können wir vertraute Tools verwenden, um die Informationen anzuzeigen und mit ihnen zu arbeiten.
Das Verzeichnis / proc enthält auch andere ähnliche Dateien, zum Beispiel:
- /proc/ uptime - Zeigt die Betriebszeit Ihres Linux-Kernels an - mit anderen Worten, wie lange Ihr System läuft, ohne herunterzufahren.
- /proc/-Version - Macht die Version Ihres Linux-Kernels verfügbar.
/ dev
Im Verzeichnis / dev finden Sie Dateien, die Geräte darstellen, sowie Dateien, die andere spezielle Dinge darstellen. Zum Beispiel ist /dev/ cdrom Ihr CD-ROM-Laufwerk. /dev/ sda repräsentiert Ihre erste Festplatte, während /dev/ sda1 die erste Partition auf Ihrer ersten Festplatte darstellt.
Möchten Sie Ihre CD-ROM mounten? Führen Sie den Befehl mount aus und geben Sie /dev/ cdrom als das Gerät an, das Sie mounten möchten. Möchten Sie Ihre erste Festplatte partitionieren? Führen Sie ein Festplattenpartitionierungsdienstprogramm aus, und geben Sie /dev/ sda als die Festplatte an, die Sie bearbeiten möchten. Möchten Sie die erste Partition auf Ihrer ersten Festplatte formatieren? Führen Sie einen Formatierungsbefehl aus und weisen Sie ihn an, /dev/ sda1 zu formatieren.
Wie Sie sehen, hat das Freilegen dieser Geräte als Teil des Dateisystems seine Vorteile. Das Dateisystem bietet einen konsistenten "Namensraum", den alle Anwendungen verwenden können, um die Geräte zu adressieren und darauf zuzugreifen.
/dev/ null, /dev/ zufällig und /dev/ null
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 darauf geschrieben werden - denke an es als Mülleimer oder schwarzes Loch. Wenn Sie jemals einen Kommentar sehen, der Ihnen sagt, dass Sie Beschwerden an /dev/ null senden sollen - das ist eine geekige Art zu sagen, "werfen Sie sie in den Papierkorb."
- /dev/ random - Erzeugt Zufälligkeit mit Umgebungslärm. Es ist ein Zufallszahlengenerator, den Sie anzapfen können.
- /dev/ Zero - Erzeugt Nullen - ein konstanter Strom von Nullen.
Wenn Sie diese drei Dateien als Dateien betrachten, sehen Sie keine Verwendung für sie. 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 und sich nicht um seine Ausgabe kümmern möchten, können Sie diese Ausgabe an /dev/ null umleiten. Wenn Sie die Ausgabe eines Befehls an /dev/ null umleiten, wird der Befehl sofort verworfen. Anstatt dass jeder Befehl seinen eigenen "stillen Modus" implementiert, können Sie diese Methode mit jedem Befehl verwenden.
Befehl & gt;/dev/ null
Wenn Sie eine Quelle der Zufälligkeit wünschen - zum Beispiel, um einen Verschlüsselungsschlüssel zu erzeugen, müssten Sie keinen eigenen Zufallszahlengenerator schreiben - Sie könnten /dev/ zufällig verwenden.
Um den Inhalt einer Festplatte zu löschen, indem Nullen geschrieben werden, benötigen Sie kein spezielles Dienstprogramm, um eine Festplatte auf Null zu setzen. Sie können Standard-Utilities und /dev/ Zero verwenden. Zum Beispiel liest der Befehl dd von einem Ort und schreibt an einen anderen Ort. Der folgende Befehl würde Nullen von /dev/ zero lesen und sie direkt auf die erste Festplattenpartition auf Ihrem System schreiben, wobei der Inhalt vollständig gelöscht wird.
( Warnung : Dieser Befehl löscht alle Daten auf Ihrer ersten Partition, wenn Sie sie ausführen. Führen Sie diesen Befehl nur aus, wenn Sie Daten löschen möchten.)
dd if = /dev/ Null von = /dev/ sda1
Hier verwenden wir ddmit speziellen Dateien( /dev/ zero und /dev/ sda1), aber wir könnten auch dd verwenden, um von tatsächlichen Dateien zu lesen und zu schreiben. Derselbe Befehl funktioniert sowohl zum direkten Bearbeiten 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 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 Zufallsgenerator zugreifen oder direkt von einem Gerät lesen? Sie finden beide im Dateisystem;keine andere Form der Adressierung benötigt.
Natürlich sind einige Dinge keine Dateien - Prozesse, die auf Ihrem System laufen, sind kein Teil des Dateisystems."Alles ist eine Datei" ist ungenau, aber viele Dinge verhalten sich wie Dateien.