Co je to speciální soubor?

V operačním systému počítače je speciální soubor jedním typem souboru, který může být uložen v systému souborů. Speciální soubor se někdy také nazývá soubor zařízení .

Účelem speciálního souboru je vystavit zařízení jako soubor v systému souborů. Speciální soubor poskytuje univerzální rozhraní pro hardwarová zařízení (a virtuální zařízení vytvořená a používaná jádrem), protože nástroje pro přístup k souborům mohou být použity pro přístup k zařízení.

Jsou-li data ze speciálního souboru červená nebo jsou zapsána do souboru, operace proběhne okamžitě a nepodléhá konvenčním pravidlům souborového systému.

V Linuxu existují dva typy speciálních souborů: blokovat speciální soubory a speciální znakové soubory .

Speciální soubor bloku funguje jako přímé rozhraní k blokovému zařízení. Blokové zařízení je jakékoliv zařízení, které provádí data I / O v jednotkách bloků.

Příklady speciálních blokových bloků:

  • / dev / sd xn - připojené oddíly fyzických paměťových zařízení. Písmeno x označuje fyzické zařízení a číslo n označuje oddíl na tomto zařízení. Například / dev / sda1 je typicky první oddíl na prvním fyzickém úložném zařízení.
  • / dev / loop zařízení n - loop. Jedná se o speciální zařízení, která umožňují použít soubor v souborovém systému jako blokové zařízení. Soubor může obsahovat celý svůj vlastní souborový systém a je přístupný, jako by se jednalo o připojený oddíl na fyzickém úložném zařízení. Soubor obrazu disku ISO může být například připojen jako smyčkové zařízení.

Chcete-li vědět, jaký velký blok je ve vašem systému, spusťte jako blok rootdev --getbsz device :

 sudo blockdev --getbsz / dev / sda1 
 4096 

V tomto příkladu je velikost bloku 4096 bytů (4 kibibyty).

Speciální soubory znaků

Speciální souborový znak je podobný blokovému zařízení, ale data jsou zapisována po jednom znaku (osm bitů nebo jeden bajt).

Příklady speciálních souborů znaků:

  • / dev / stdin (Standardní vstup.)
  • / dev / stdout (Standardní výstup.)
  • / dev / stderr (Standardní chyba.)
  • / dev / random (PRNG, která může zpoždění vracení hodnoty získat další entropii.)
  • / dev / urandom (PRNG, který vždy vrátí hodnotu okamžitě, bez ohledu na požadovanou entropii.)
  • / dev / null (Null zařízení. Čtení z tohoto souboru vždy dostane nulový bajt, zápis do tohoto souboru neprovádí nic.)

Typy souborů Linuxu

V jádře Linuxu jsou typy souborů deklarovány v hlavičkovém souboru sys / stat.h. Níže je uveden název typu, symbolický název a bitová maska ​​pro každý typ souboru Linux.

Jak zjistím, zda je soubor speciální?

Test speciálních bloků

V bash příkaz " test -b file " vrátí stav výstupu 0, pokud je soubor blokový speciální, nebo 1, pokud je soubor jiného typu nebo neexistuje.

 test -b / dev / sda1; echo $? # kontrola speciálního bloku, echo exit status testu 
 0 
 test -b / dev / null; echo $? # znakové speciální soubory nejsou blokové speciálně 
 1 

Test na speciální znak

Chcete-li zjistit, zda je soubor speciální, použijte " test -c soubor ":

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

Použití stat

Můžete také zkontrolovat typ souboru pomocí stat :

 stat / dev / sda1 
 Soubor: / dev / sda1 Velikost: 0 Bloky: 0 IO Blok: 4096 speciální soubor bloku Zařízení: 6h / 6d Inode: 7998 Odkazy: 1 Typ zařízení: 8, 1 Přístup: (0660 / brw-rw ----) Uid : (0 / root) Gid: (6 / disk) Přístup: 2018-07-08 06: 41: 25.540000000 -0400 Změnit: 2018-07-08 06: 41: 25.540000000 -0400 Změnit: 2018-07-08 06: 41: 25.540000000 -0400 Narození: - 
 stat / dev / random 
 Soubor: / dev / random Velikost: 0 Bloky: 0 IO Blok: 4096 znaků speciální soubor Zařízení: 6h / 6d Inode: 6518 Odkazy: 1 Typ zařízení: 1, 8 Přístup: (0666 / crw-rw-rw-) Uid: (0 / root) Gid: (0 / root) Přístup: 2018-07-08 06: 41: 19.676000000 -0400 Změnit: 2018-07-08 06: 41: 19.676000000 -0400 Změnit: 2018-07-08 06:41 : 19.676000000 -0400 Narození: - 

Inode, podmínky operačního systému, standardní vstup (stdin), standardní výstup (stdout)