Was bedeutet alles, was eine Datei in Linux bedeutet?
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, die Funktionsweise von Linux zu verstehen.
Viele Dinge unter Linux erscheinen in Ihrem Dateisystem, aber es handelt sich nicht um Dateien. Es handelt 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 /dev, das spezielle Dateien enthält, die Geräte darstellen, und /proc, das spezielle Dateien enthält, die System- und Prozessinformationen darstellen.
/ Prozent
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 Ihnen Ihre CPU-Informationen mitteilt – Sie können den Inhalt dieser Datei einfach mit jedem Standardbefehl lesen, der mit Klartextdateien funktioniert. Sie können beispielsweise den Befehl verwenden Katze /proc/cpuinfo um den Inhalt dieser Datei an das Terminal zu drucken – Ihre CPU-Informationen an das Terminal zu drucken. Sie können /proc/cpuinfo sogar in einem Texteditor öffnen, um den Inhalt anzuzeigen.
AnzeigeDenken Sie daran, dass /proc/cpuinfo eigentlich 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 es uns, vertraute Werkzeuge zu 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 eingeschaltet war, ohne heruntergefahren zu werden.
- /proc/version – Zeigt die Version Ihres Linux-Kernels an.
/dev
Im Verzeichnis /dev finden Sie Dateien, die Geräte darstellen – sowie Dateien, die andere spezielle Dinge darstellen. /dev/cdrom ist beispielsweise 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 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 Dienstprogramm zur Festplattenpartitionierung aus und geben Sie /dev/sda als die zu bearbeitende Festplatte an. 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 die Bereitstellung dieser Geräte als Teil des Dateisystems seine Vorteile. Das Dateisystem bietet einen konsistenten Namensraum, über den alle Anwendungen die Geräte adressieren und darauf zugreifen 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 darauf geschriebenen Daten – betrachte es als Mülleimer oder schwarzes Loch. Wenn Sie jemals einen Kommentar sehen, der Sie auffordert, Beschwerden an /dev/null zu senden – das ist eine geekige Art zu sagen, dass Sie sie in den Papierkorb werfen.
- /dev/random – Erzeugt Zufälligkeit unter Verwendung von Umgebungsrauschen. Es ist ein Zufallszahlengenerator, den Sie anzapfen können.
- /dev/zero – Erzeugt Nullen – einen konstanten Strom von Nullen.
Wenn Sie sich diese drei als Dateien vorstellen, werden Sie keine Verwendung für sie sehen. Betrachten Sie sie stattdessen als Werkzeuge.
Beispielsweise erzeugen Linux-Befehle standardmäßig Fehlermeldungen und andere Ausgaben, die sie auf der Standardausgabe, normalerweise dem Terminal, ausgeben. Wenn Sie einen Befehl ausführen möchten und sich nicht um seine Ausgabe kümmern, können Sie diese Ausgabe nach /dev/null umleiten. Wenn Sie die Ausgabe eines Befehls nach /dev/null umleiten, wird dieser 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üssten Sie keinen eigenen Zufallszahlengenerator schreiben – können Sie /dev/random verwenden.
Um den Inhalt einer Festplatte zu löschen, indem Sie Nullen darauf schreiben, benötigen Sie kein spezielles Dienstprogramm zum Nullen eines Laufwerks – Sie können Standarddienstprogramme und /dev/zero verwenden. Zum Beispiel die dd Befehl liest von einem Speicherort und schreibt an einen anderen Speicherort. Der folgende Befehl würde Nullen aus /dev/zero lesen und sie direkt auf die erste Festplattenpartition Ihres Systems schreiben, wobei deren Inhalt vollständig gelöscht wird.
( Warnung : Dieser Befehl löscht alle Daten auf Ihrer ersten Partition, wenn Sie ihn 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 auch dd verwenden, um aus tatsächlichen Dateien zu lesen und in sie zu schreiben. Derselbe Befehl funktioniert sowohl für die direkte Manipulation von Geräten als auch für die Arbeit mit Dateien.
Klärung
In der Praxis ist es genauer zu sagen, dass alles ein Bytestrom ist, als alles eine Datei. /dev/random ist keine Datei, aber sicherlich ein Strom von Bytes. Und obwohl diese Dinge technisch gesehen 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.
AnzeigeNatürlich sind manche Dinge keine Dateien – Prozesse, die auf Ihrem System ausgeführt werden, sind kein Teil des Dateisystems. Alles, was eine Datei ist, ist ungenau, aber viele Dinge verhalten sich wie Dateien.
WEITER LESEN- & rsaquo; Wie Computer Zufallszahlen erzeugen
- & rsaquo; So bearbeiten Sie Textdateien unter Linux grafisch mit gedit
- & rsaquo; So mounten und trennen Sie Speichergeräte vom Linux-Terminal
- & rsaquo; So steuern Sie den sudo-Zugriff unter Linux
- & rsaquo; So verwenden Sie den Strings-Befehl unter Linux
- & rsaquo; Was ist Swappiness unter Linux? (und wie man es ändert)
- & rsaquo; 6 Unterschiede zwischen dem Linux-Dateisystem und dem Windows-Dateisystem
- › Was ist MIL-SPEC Fallschutz?
Chris Hoffman ist Chefredakteur von How-To Geek. Er schreibt über ein Jahrzehnt über Technologie und war zwei Jahre lang Kolumnist bei PCWorld. Chris hat für die New York Times geschrieben, wurde als Technologieexperte von Fernsehsendern wie Miamis NBC 6 interviewt und ließ sich von Nachrichtenagenturen wie der BBC über seine Arbeit berichten. Seit 2011 hat Chris über 2.000 Artikel geschrieben, die fast eine Milliarde Mal gelesen wurden – und das nur hier bei How-To Geek.
Vollständige Biografie lesen