GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Grundlagen zu Unix-Dateien:Inode, Soft vs. Hard Link, Gerätedateien, Named Pipes

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ümer
2. 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


Linux
  1. Verstehen Sie die UNIX/Linux-Inodes-Grundlagen mit Beispielen

  2. UNIX/Linux :Grundlagen der Zugriffssteuerungslisten (ACLs).

  3. Was sind Softlinks und Hardlinks im Linux-Dateisystem?

  4. Linux-Interviewfragen:Open Files / Open File Descriptors

  5. Unterschied zwischen Softlinks und Hardlinks in Linux

So erstellen Sie harte und weiche (symlink) Links auf Linux-Systemen

Erläuterung von Soft Link und Hard Link in Linux anhand von Beispielen

Hardlinks und Softlinks in Linux erklärt

Der ln-Befehl unter Linux:Soft- und Hardlinks erstellen

Unix LS-Befehl:15 praktische Beispiele

Warum kann ich keinen festen Link von einer Gerätedatei in einem anderen Verzeichnis als /dev erstellen?