Inodes
Jeder Datei in einem Linux/Unix-Betriebssystem ist ein Inoden zugeordnet, mit Ausnahme von Solaris ZFS, das keine Inodes hat. Inodes funktionieren im Grunde sehr ähnlich wie ein Anhang eines Buches. Jeder Inode enthält die folgenden Informationen über die Datei.
1. Eigentümer2. Berechtigungen
3. Größe
4. Zeitpunkt des letzten Zugriffs
5. Erstellungszeit
6. Gruppen-ID
7. Zeiger auf Datenblöcke, die dem Dateiinhalt zugeordnet sind
Hinweis:Inode stellt jedoch keinen Dateinamen bereit.
Dateitypen
Es gibt grundsätzlich 5 Arten von Dateien in jedem Unix-Betriebssystem.
1. Regulär
2. Verzeichnis
3. Symbolische Links (Hardlink &Softlink)
4. Gerätedateien (Zeichen-Spezial- und Block-Spezialgerät)
5. Benannte Rohre
Das Zeichen in der ersten Spalte des Befehls ls -l identifiziert den Typ einer Datei.
# cd / # ls -l bin lrwxrwxrwx 1 root root 9 Sep 19 15:41 bin -> ./usr/bin
- Regular files d Directories l Symbolic links b Block-special device files c Character-special device files p Named pipes
Dateien und Verzeichnisse
Die regulären Dateien können verschiedene Datentypen speichern und können einfach mit dem Touch-Befehl oder dem vi-Editor erstellt werden. Verzeichnisse enthalten die Zuordnung zwischen Dateien und/oder Verzeichnissen und Inode-Nummern.
Softlinks
Wie im Diagramm gezeigt, zeigen Softlinks oder symbolische Links einfach auf eine andere Datei. Es enthält nur den Pfadnamen der Datei, auf die es zeigt
1. Erstellungsmethode
# touch file1 # ln -s file1 link1 # ls -l -rw-r--r-- 1 root root 0 Sep 19 14:41 link1 lrwxrwxrwx 1 root root 5 Sep 19 15:41 link1 -> file1
2. Die Größe des im obigen Beispiel erstellten Softlinks ist die Anzahl der Zeichen im Pfadnamen (Datei1), also 5 (er kann absolut oder relativ sein).
3. Wenn Sie die Originaldatei (Datei1) löschen, wird der Softlink als unbrauchbar dargestellt.
4. Softlinks können sich auf verschiedenen Dateisystemen befinden.
Harte Links
Jede Datei verwendet mindestens einen festen Link. Wenn Sie also eine neue Datei erstellen, wird ein neuer Verzeichniseintrag erstellt, der als Linkanzahl bezeichnet wird. Wenn Sie also einen neuen Hardlink zu dieser Datei erstellen, erhöht sich die Linkanzahl um 1.
1. Erstellungsmethode
# touch file1 # ls -l -rw-r--r-- 1 root root 0 Sep 23 13:19 file1 # ln file1 file2 # ls -l -rw-r--r-- 2 root root 0 Sep 23 13:19 file1 -rw-r--r-- 2 root root 0 Sep 23 13:19 file2 # ls -li 1282 -rw-r--r-- 2 root 0 root 0 Sep 23 13:19 file1 1282 -rw-r--r-- 2 root 0 root 0 Sep 23 13:19 file2 # find . -inum 1282 ./file1 ./file2
2. Die Anzahl der Links erhöht sich jedes Mal um eins, wenn Sie wie oben gezeigt einen neuen Hardlink zu der Datei erstellen.
3. Auch wenn Sie eine der Dateien löschen, hat dies keine Auswirkungen auf die andere Datei. Nur die Anzahl der Links wird verringert
4. Feste Links können das Dateisystem nicht überschreiten.
Gerätedateien
Im UNIX-Betriebssystem ist jedem physischen Gerät eine Datei zugeordnet, die als Gerätedatei bezeichnet wird . Es ist eine Schnittstelle, die mit Gerätetreibern interagiert. Im Gegensatz zu anderen Dateitypen enthalten sie keine Daten in Datenblöcken, sondern verwenden die Inodes, um die Haupt- und Nebennummer für jede Gerätedatei zu speichern.
# cd /dev/ # ls -l crw-r----- 1 root tty 4, 0 Sep 23 12:51 tty0 brw-rw----- 1 root disk 8, 1 Sep 23 12:51 sda0
Hauptgerätenummer – Spezifischer Gerätetreiber erforderlich, um auf ein Gerät
Minor Device No zuzugreifen – spezifische Einheit des Typs, den der Gerätetreiber steuert.
Wenn Sie beispielsweise 10 HP-Drucker haben, ist die Hauptnummer der HP-Druckergerätetreiber und die Nebennummer die Instanz des Druckers (1,2 ... bis zu 10).
Es gibt zwei Arten von Gerätedateien
1. Besonderes Charakter
2. Spezial sperren
Charakterspezifische Gerätedateien
1. Das Zeichen „c“ in der ersten Spalte der Ausgabe des Befehls ls -l identifiziert eine zeichenspezifische Gerätedatei
2. Der Datenzugriff erfolgt als Datenstrom (Zeichen für Zeichen, jeweils 1 Byte)
3. Beispiel:tty, seriell, virtuelle Terminals
# ls -l crw-r----- 1 root tty 4, 0 Sep 23 12:51 tty0
Spezielle Gerätedatei blockieren
1. Das Zeichen „b“ in der ersten Spalte der Ausgabe des Befehls ls -l identifiziert eine zeichenspezifische Gerätedatei
2. Auf die Daten wird mit der für dieses Gerät definierten Blockgröße zugegriffen
3. Beispiel:Festplatte, CD/DVD
# ls -l brw-rw----- 1 root disk 8, 1 Sep 23 12:51 sda0
Named Pipes
– Named Pipes sind spezielle Dateien, die für die Kommunikation zwischen Prozessoren verwendet werden. Im Gegensatz zu normalen Pipes können Sie in benannten Pipes lesen und schreiben. Aus diesem Grund werden sie auch als FIFO (file in file out) bezeichnet.
– mknod() oder mkfifio() sind gängige Beispiele, die sich Named Pipes zunutze machen, um namentlich auf die Pipe zuzugreifen.
– Wie im Beispiel unten gezeigt, können 2 Prozesse (gzip und cat) gleichzeitig auf die Named Pipe zugreifen, um Daten darauf zu schreiben und daraus zu lesen.
# mkfifo test_pipe # gzip -9 -c > test_pipe < out.gz # cat file1 > test_pipe # ls -l test_pipe prw-rw----- 1 root root 0 Sep 23 12:51 test_pipe