Spesiell fil

I en datamaskin operativsystem , til spesiell fil er en type fil som er lagret i en filsystem . En spesiell fil kalles noen ganger også a enhetsfil .

Bestemme fil spesiell type - Linux kommandolinje.

Formålet med en spesiell fil er å eksponere enheten som en fil i filsystemet. En spesiell fil gir et universelt grensesnitt for maskinvareenheter (og virtuelle enheter opprettet og brukt av kjernen), fordi verktøy for fil I / O kan få tilgang til enheten.



Når data blir rødt fra eller skrevet til en spesiell fil, skjer operasjonen umiddelbart, og er ikke underlagt konvensjonelle filsystemregler.

I Linux er det to typer spesialfiler: blokker spesiell fil og karakter spesialfil .

Blokker spesielle filer

TIL blokker spesiell fil fungerer som et direkte grensesnitt til en blokkenhet. En blokkeringsenhet er en hvilken som helst enhet som utfører data-I / U i enheter av blokker .

Eksempler på blokkerende spesialfiler:

hvordan du slår av skjermsparer på mac
  • / dev / sd xn - montert skillevegger av fysisk lagringsenheter . Brevet x refererer til en fysisk enhet, og tallet n refererer til en partisjon på enheten. For eksempel, / dev / sda1 er den første partisjonen på den første fysiske lagringsenheten.
  • / dev / loop n - loop enheter. Dette er spesielle enheter som gjør at en fil i filsystemet kan brukes som en blokkenhet. Filen kan inneholde et helt filsystem, og få tilgang til det som om det var en montert partisjon på en fysisk lagringsenhet. For eksempel kan en ISO-diskbildefil monteres som en loop-enhet.

Hvis du vil vite hvor stor en blokk er på systemet ditt, kjør ' blockdev --getbsz enhet ' som rot , for eksempel:

sudo blockdev --getbsz /dev/sda1
4096

I dette eksemplet er blokkstørrelsen 4096 byte (4 kibytes).

Tegn spesielle filer

TIL karakter spesialfil ligner på en blokkanordning, men data skrives ett tegn (åtte biter , eller en byte) om gangen.

youtube hvordan du sløyfer en video

Eksempler på karakterfiler:

  • / dev / stdin ( Standard inngang .)
  • / dev / stdout ( Standard utgang .)
  • / dev / stderr ( Standard feil .)
  • / dev / tilfeldig ( PRNG som kan forsinke retur av en verdi for å skaffe ekstra entropi.)
  • / dev / urandom (PRNG som alltid returnerer en verdi umiddelbart, uavhengig av entropi.)
  • / dev / null (Nullapparatet. Å lese fra denne filen får alltid en nullbyte. Å skrive til denne filen gjør ingenting.)

Linux filtyper

I Linux-kjernen deklareres filtyper i toppteksten sys / stat.h . Typenavnet, symbolsk navn og bitmaske for hver Linux-filtype er oppført nedenfor.

Skriv inn navnet Symbolsk navn Bitmaske
Stikkontakt S_IFSOCK 0140000
Symbolsk lenke S_IFLNK 0120000
Vanlig fil S_IFREG 0100000
Blokker spesialfil S_IFBLK 0060000
Katalog S_IFDIR 0040000
Tegn spesiell fil S_IFCHR 0020000
FIFO (kalt pipe) S_IFIFO 0010000

Hvordan kan jeg vite om en fil er spesiell?

Test for blokk spesial

I bash , kommandoen ' test -b fil 'returnerer en utgangsstatus på 0 hvis fil er blokk spesiell, eller 1 hvis fil er en annen type eller eksisterer ikke.

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 for karakterspesial

For å finne ut om en fil er tegnspesiell, bruk 'test -c fil ':

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

Bruke stat

Du kan også sjekke filtypen med stat:

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: -