Was ist Special file?

In einem Computerbetriebssystem ist eine spezielle Datei ein Dateityp, der in einem Dateisystem gespeichert ist. Eine spezielle Datei wird manchmal auch als Gerätedatei bezeichnet.

Was ist Special file?

Der Zweck einer speziellen Datei besteht darin, das Gerät als Datei im Dateisystem verfügbar zu machen. Eine spezielle Datei bietet eine universelle Schnittstelle für Hardwaregeräte (und virtuelle Geräte, die vom Kernel erstellt und verwendet werden), da Tools für Datei-I/O auf das Gerät zugreifen können.

Wenn Daten aus einer speziellen Datei gelesen oder in eine spezielle Datei geschrieben werden, erfolgt die Operation sofort und unterliegt nicht den herkömmlichen Dateisystemregeln.

Unter Linux gibt es zwei Arten von Spezialdateien: Block-Spezialdatei und Zeichen-Spezialdatei.

Sperren Sie spezielle Dateien

Eine spezielle Blockdatei fungiert als direkte Schnittstelle zu einem Blockgerät. Ein Blockgerät ist jedes Gerät, das Daten-E/A in Einheiten von Blöcken durchführt.

Beispiele für spezielle Blockdateien:

  • /dev/sdxn – gemountete Partitionen von physischen Speichergeräten. Der Buchstabe x bezieht sich auf ein physisches Gerät, und die Zahl n bezieht sich auf eine Partition auf diesem Gerät. Beispielsweise ist /dev/sda1 die erste Partition auf dem ersten physischen Speichergerät.

  • /dev/loopn – Schleifengeräte. Dies sind spezielle Geräte, die es ermöglichen, eine Datei im Dateisystem als Blockgerät zu verwenden. Die Datei kann ein vollständiges eigenes Dateisystem enthalten und auf sie zugegriffen werden, als wäre sie eine gemountete Partition auf einem physischen Speichergerät. Beispielsweise kann eine ISO-Disk-Image-Datei als Loop-Gerät gemountet werden.

Wenn Sie wissen möchten, wie groß ein Block auf Ihrem System ist, führen Sie “blockdev –getbsz device” als root aus, z.

sudo blockdev --getbsz /dev/sda1
4096

In diesem Beispiel beträgt die Blockgröße 4096 Byte (4 Kibibyte).

Charakterspezifische Dateien

Eine spezielle Zeichendatei ähnelt einem Blockgerät, aber die Daten werden zeichenweise (acht Bits oder ein Byte) auf einmal geschrieben.

Beispiele für spezielle Zeichendateien:

  • /dev/stdin (Standardeingabe.)

  • /dev/stdout (Standardausgabe.)

  • /dev/stderr (Standardfehler.)

  • /dev/random (PRNG, das die Rückgabe eines Werts verzögern kann, um zusätzliche Entropie zu erhalten.)

  • /dev/urandom (PRNG, das unabhängig von der erforderlichen Entropie immer sofort einen Wert zurückgibt.)

  • /dev/null (Das Null-Gerät. Das Lesen aus dieser Datei erhält immer ein Null-Byte; das erfolgreiche Schreiben in diese Datei bewirkt nichts.)

Linux-Dateitypen

Im Linux-Kernel werden Dateitypen in der Header-Datei sys/stat.h deklariert. Der Typname, der symbolische Name und die Bitmaske für jeden Linux-Dateityp sind unten aufgeführt.

Modellname Symbolischer Name Bitmaske
Steckdose S_IFSOCK 0140000
Symbolischer Link S_IFLNK 0120000
Normale Datei S_IFREG 0100000
Spezielle Datei blockieren S_IFBLK 0060000
Verzeichnis S_IFDIR 0040000
Charakter-Spezialdatei S_IFCHR 0020000
FIFO (benannte Pipe) S_IFIFO 0010000

Wie kann ich feststellen, ob eine Datei etwas Besonderes ist?

Test für Block Special

In Bash gibt der Befehl „test -b file“ einen Exit-Status von 0 zurück, wenn die Datei blockspezifisch ist, oder 1, wenn die Datei einen anderen Typ hat oder nicht existiert.

test -b /dev/sda1; echo $?   # check for block special, echo exit status of test
0
test -b /dev/null; echo $?   # character special files are not block special
1

Test für besondere Charaktere

Um festzustellen, ob eine Datei ein Sonderzeichen ist, verwenden Sie “test -c file”:

test -c /dev/null; echo $?
0

Verwenden von stat

Sie können den Typ einer Datei auch mit stat überprüfen:

stat /dev/sda1
  File: /dev/sda1
  Size: 0           Blocks: 0          IO Block: 4096   block special file
Device: 6h/6d Inode: 7998        Links: 1     Device type: 8,1
Access: (0660/brw-rw----)  Uid: (    0/    root)   Gid: (    6/    disk)
Access: 2018-07-08 06:41:25.540000000 -0400
Modify: 2018-07-08 06:41:25.540000000 -0400
Change: 2018-07-08 06:41:25.540000000 -0400
 Birth: -
stat /dev/random
  File: /dev/random
  Size: 0           Blocks: 0          IO Block: 4096   character special file
Device: 6h/6d Inode: 6518        Links: 1     Device type: 1,8
Access: (0666/crw-rw-rw-)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-07-08 06:41:19.676000000 -0400
Modify: 2018-07-08 06:41:19.676000000 -0400
Change: 2018-07-08 06:41:19.676000000 -0400
 Birth: -

Inode, Betriebssystembegriffe, Standardeingabe (stdin), Standardausgabe (stdout)

Neueste Artikel
Vielleicht möchten Sie lesen

LEAVE A REPLY

Please enter your comment!
Please enter your name here