Kas yra speciali byla?

Kompiuterio operacinėje sistemoje specialus failas yra vieno tipo failas, kuris gali būti saugomas failų sistemoje. Kartais specialus failas taip pat vadinamas įrenginio failu .

Specialaus failo paskirtis - atskleisti įrenginį failų sistemoje. Specialus failas suteikia universalią sąsają aparatūros įrenginiams (ir branduolio sukuriamiems ir naudojamiems virtualiems įrenginiams), nes failo I / O įrankiai gali būti naudojami prieigai prie įrenginio.

Kai duomenys yra raudoni arba įrašyti į specialų failą, operacija vyksta nedelsiant ir jai netaikomos įprastinės failų sistemos taisyklės.

„Linux“ yra dviejų tipų specialiųjų failų tipai: blokuoti specialius failus ir specialius failus .

Blokinis specialus failas veikia kaip tiesioginė sąsaja su bloko įrenginiu. Blokinis įrenginys yra bet koks įrenginys, kuris atlieka duomenų I / O blokus.

Blokinių specialių failų pavyzdžiai:

  • / dev / sd xn - sumontuotos fizinių saugojimo įrenginių pertvaros. Raidė x reiškia fizinį įrenginį, o skaičius n reiškia to įrenginio skaidinį. Pavyzdžiui, / dev / sda1 paprastai yra pirmasis pirmosios fizinės atminties įrenginio skaidinys.
  • / dev / loop n kilpos įrenginiai. Tai yra specialūs prietaisai, leidžiantys failų sistemoje naudoti failą kaip blokavimo įrenginį. Faile gali būti visa atskira failų sistema ir ji gali būti prieinama taip, lyg ji būtų sumontuota skaidinio dalis fiziniame saugojimo įrenginyje. Pavyzdžiui, ISO disko vaizdo failas gali būti montuojamas kaip kilpos įrenginys.

Jei norite sužinoti, koks yra jūsų sistemoje esantis blokas, paleiskite „ blockdev -getbsz“ įrenginį kaip root, pvz .:

 sudo blockdev --getbsz / dev / sda1 
 4096 

Šiame pavyzdyje bloko dydis yra 4096 baitai (4 kibibytai).

Žymėkite specialius failus

Speciali failo simbolis yra panašus į blokinį įrenginį, bet duomenys rašomi vienu simboliu (aštuoni bitai arba vienas baitas) vienu metu.

Specialių simbolių failų pavyzdžiai:

  • / dev / stdin (Standartinis įėjimas.)
  • / dev / stdout (standartinė išvestis.)
  • / dev / stderr (standartinė klaida.)
  • / dev / random (PRNG, kuri gali atidėti vertės grąžinimą įgyti papildomą entropiją).
  • / dev / urandom (PRNG, kuri visada grąžina vertę iš karto, nepriklausomai nuo reikalingos entropijos.)
  • / dev / null (Nulinis įrenginys. Skaitymas iš šio failo visada gauna nulinį baitą; rašymas į šį failą sėkmingai nieko nedaro.)

Linux failų tipai

Linux branduolyje failų tipai deklaruojami antraštės faile sys / stat.h. Toliau pateikiamas kiekvieno Linux failo tipo tipo pavadinimas, simbolinis pavadinimas ir bitmas.

Kaip galiu pasakyti, ar failas yra ypatingas?

Išbandykite specialią bloką

Bash komandoje " test -b file " grąžinama 0 išėjimo būsena, jei failas yra specialus blokas, arba 1, jei failas yra kito tipo ar neegzistuoja.

 testas -b / dev / sda1; echo $? # patikrinkite, ar nėra specialios blokavimo, aidėjimo išėjimo būsenos 
 0 
 test -b / dev / null; echo $? # simbolių specialieji failai nėra blokuojami 
 1 

Išbandykite ypatingą charakterį

Jei norite nustatyti, ar failas yra ypatingas, naudokite „ test-c“ failą :

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

Naudojant stat

Taip pat galite patikrinti failo tipą su stat :

 stat / dev / sda1 
 Failas: / dev / sda1 Dydis: 0 Blokai: 0 IO Blokas: 4096 blokuoti specialų failą Įrenginys: 6h / 6d Inode: 7998 Nuorodos: 1 Įrenginio tipas: 8, 1 Prieiga: (0660 / brw-rw ----) Uid : (0 / root) Gid: (6 / disk) Prieiga: 2018-07-08 06: 41: 25.540000000 -0400 Pakeisti: 2018-07-08 06: 41: 25.540000000 -0400 Pakeisti: 2018-07-08 06: 41: 25.540000000 -0400 Gimimas: - 
 stat / dev / random 
 Failas: / dev / random Dydis: 0 Blokai: 0 IO Blokas: 4096 simbolis specialus failas Įrenginys: 6h / 6d Inode: 6518 Nuorodos: 1 Įrenginio tipas: 1, 8 Prieiga: (0666 / crw-rw-rw-) Uid: (0 / root) Gid: (0 / root) Prieiga: 2018-07-08 06: 41: 19.676000000 -0400 Pakeisti: 2018-07-08 06: 41: 19.676000000 -0400 Pakeisti: 2018-07-08 06: 41 : 19.676000000 -0400 Gimimas: - 

Inode, operacinės sistemos terminai, standartinė įvestis (stdin), standartinė išvestis (stdout)