"Kõik on fail" ja Linuxi failitüüpide selgitus
Kui olete Linuxi kasutaja uus või olete seda paar kuud kasutanud, peate olema kuulnud või lugenud selliseid avaldusi nagu\"Linuxis on kõik fail".
See on tegelikult tõsi, ehkki see on lihtsalt üldistamise mõiste, käsitletakse Unixis ja selle derivaatides nagu Linux kõiki asju failina. Kui miski pole fail, peab see süsteemis töötama protsessina.
Selle mõistmiseks võtke näiteks juurkataloogi (/)
maht, mida erinevat tüüpi Linuxi failid alati kulutavad. Kui loote faili või teisaldate faili oma süsteemi, võtab see füüsilisel kettal ruumi ja seda peetakse kindlas vormingus (failitüübiks).
Ja ka Linuxi süsteem ei erista faile ja katalooge, kuid kataloogid teevad ühe olulise töö, see tähendab, et muud failid salvestatakse rühmade jaoks hierarhias hõlpsaks asukoha tuvastamiseks. Kõik teie riistvarakomponendid on esindatud failidena ja süsteem suhtleb nendega nende failide abil.
Idee on oluline kirjeldus Linuxi suurepärasest omadusest, kus sisend- ja väljundressursid nagu teie dokumendid, kataloogid (kaustad Mac OS X ja Windowsis), klaviatuur, monitor, kõvakettad, eemaldatavad andmekandjad, printerid, modemid, virtuaalsed terminalid ning ka protsessidevaheline ja võrguside on failisüsteemi ruumiga määratletud baitide voog.
Märkimisväärne eelis, et kõik on fail, on see, et ülaltoodud sisend-/väljundressurssidel saab kasutada sama Linuxi tööriistade, utiliitide ja API-de komplekti.
Kuigi kõik Linuxis on fail, on teatud spetsiaalseid faile, mis on midagi enamat kui lihtsalt failid, näiteks pesad ja nimega torud.
Millised on Linuxi erinevad failitüübid?
Linuxis on põhimõtteliselt kolme tüüpi faile:
- Tavalised/tavalised failid
- erifailid
- kataloogid
Need on failide andmed, mis sisaldavad teksti, andmeid või programmi juhiseid ning need on kõige levinumad failitüübid, mida võite Linuxi süsteemist leida.
- loetavad failid
- Binaarfailid
- pildifailid
- Pakitud failid ja nii edasi.
Spetsiaalsed failid sisaldavad järgmist:
Blokeerimisfailid: need on seadme failid, mis võimaldavad puhverdatud juurdepääsu süsteemi riistvarakomponentidele. Need pakuvad failisüsteemi kaudu seadme draiveritega suhtlemise viisi.
Blokeerimisfailide üks oluline aspekt on see, et nad saavad teatud aja jooksul edastada suure hulga andmeid ja teavet.
Blokeerimisfailide pistikupesade kuvamine kataloogis:
# ls -l /dev | grep "^b"
brw-rw---- 1 root disk 7, 0 May 18 10:26 loop0 brw-rw---- 1 root disk 7, 1 May 18 10:26 loop1 brw-rw---- 1 root disk 7, 2 May 18 10:26 loop2 brw-rw---- 1 root disk 7, 3 May 18 10:26 loop3 brw-rw---- 1 root disk 7, 4 May 18 10:26 loop4 brw-rw---- 1 root disk 7, 5 May 18 10:26 loop5 brw-rw---- 1 root disk 7, 6 May 18 10:26 loop6 brw-rw---- 1 root disk 7, 7 May 18 10:26 loop7 brw-rw---- 1 root disk 1, 0 May 18 10:26 ram0 brw-rw---- 1 root disk 1, 1 May 18 10:26 ram1 brw-rw---- 1 root disk 1, 10 May 18 10:26 ram10 brw-rw---- 1 root disk 1, 11 May 18 10:26 ram11 brw-rw---- 1 root disk 1, 12 May 18 10:26 ram12 brw-rw---- 1 root disk 1, 13 May 18 10:26 ram13 brw-rw---- 1 root disk 1, 14 May 18 10:26 ram14 brw-rw---- 1 root disk 1, 15 May 18 10:26 ram15 brw-rw---- 1 root disk 1, 2 May 18 10:26 ram2 brw-rw---- 1 root disk 1, 3 May 18 10:26 ram3 brw-rw---- 1 root disk 1, 4 May 18 10:26 ram4 brw-rw---- 1 root disk 1, 5 May 18 10:26 ram5 ...
Märgifailid: Need on ka seadmefailid, mis pakuvad puhverdamata jadajuurdepääsu süsteemi riistvarakomponentidele. Nad töötavad seadmetega suhtlemisviisi pakkudes, edastades andmeid ühe märgi kaupa.
Märgifailide pesade loend kataloogis:
# ls -l /dev | grep "^c"
crw------- 1 root root 10, 235 May 18 15:54 autofs crw------- 1 root root 10, 234 May 18 15:54 btrfs-control crw------- 1 root root 5, 1 May 18 10:26 console crw------- 1 root root 10, 60 May 18 10:26 cpu_dma_latency crw------- 1 root root 10, 203 May 18 15:54 cuse crw------- 1 root root 10, 61 May 18 10:26 ecryptfs crw-rw---- 1 root video 29, 0 May 18 10:26 fb0 crw-rw-rw- 1 root root 1, 7 May 18 10:26 full crw-rw-rw- 1 root root 10, 229 May 18 10:26 fuse crw------- 1 root root 251, 0 May 18 10:27 hidraw0 crw------- 1 root root 10, 228 May 18 10:26 hpet crw-r--r-- 1 root root 1, 11 May 18 10:26 kmsg crw-rw----+ 1 root root 10, 232 May 18 10:26 kvm crw------- 1 root root 10, 237 May 18 10:26 loop-control crw------- 1 root root 10, 227 May 18 10:26 mcelog crw------- 1 root root 249, 0 May 18 10:27 media0 crw------- 1 root root 250, 0 May 18 10:26 mei0 crw-r----- 1 root kmem 1, 1 May 18 10:26 mem crw------- 1 root root 10, 57 May 18 10:26 memory_bandwidth crw------- 1 root root 10, 59 May 18 10:26 network_latency crw------- 1 root root 10, 58 May 18 10:26 network_throughput crw-rw-rw- 1 root root 1, 3 May 18 10:26 null crw-r----- 1 root kmem 1, 4 May 18 10:26 port crw------- 1 root root 108, 0 May 18 10:26 ppp crw------- 1 root root 10, 1 May 18 10:26 psaux crw-rw-rw- 1 root tty 5, 2 May 18 17:40 ptmx crw-rw-rw- 1 root root 1, 8 May 18 10:26 random
Sümboolsete linkide failid: sümboolne link on viide süsteemi teisele failile. Seetõttu on sümboolsete linkide failid failid, mis osutavad teistele failidele ja need võivad olla kas kataloogid või tavalised failid.
Sümboolsete linkide pistikupesade kuvamine kataloogis:
# ls -l /dev/ | grep "^l"
lrwxrwxrwx 1 root root 3 May 18 10:26 cdrom -> sr0 lrwxrwxrwx 1 root root 11 May 18 15:54 core -> /proc/kcore lrwxrwxrwx 1 root root 13 May 18 15:54 fd -> /proc/self/fd lrwxrwxrwx 1 root root 4 May 18 10:26 rtc -> rtc0 lrwxrwxrwx 1 root root 8 May 18 10:26 shm -> /run/shm lrwxrwxrwx 1 root root 15 May 18 15:54 stderr -> /proc/self/fd/2 lrwxrwxrwx 1 root root 15 May 18 15:54 stdin -> /proc/self/fd/0 lrwxrwxrwx 1 root root 15 May 18 15:54 stdout -> /proc/self/fd/1
Sümboolseid linke saate luua Linuxi utiliidi ln
abil, nagu allpool toodud näites.
# touch file1.txt # ln -s file1.txt /home/tecmint/file1.txt [create symbolic link] # ls -l /home/tecmint/ | grep "^l" [List symbolic links]
Ülalolevas näites lõin kataloogis/tmp faili nimega file1.txt
, seejärel lõin sümboolse lingi /home/tecmint/file1.txt, et osutada /tmp/file1.txt.
Torud või nimega torud: need on failid, mis võimaldavad protsessidevahelist suhtlust, ühendades ühe protsessi väljundi teise sisendiga.
Nimetatud toru on tegelikult fail, mida kasutavad kaks protsessi mõlemaga suhtlemiseks ja see toimib Linuxi toruna.
Torude pistikupesade loetelu kataloogis:
# ls -l | grep "^p"
prw-rw-r-- 1 tecmint tecmint 0 May 18 17:47 pipe1 prw-rw-r-- 1 tecmint tecmint 0 May 18 17:47 pipe2 prw-rw-r-- 1 tecmint tecmint 0 May 18 17:47 pipe3 prw-rw-r-- 1 tecmint tecmint 0 May 18 17:47 pipe4 prw-rw-r-- 1 tecmint tecmint 0 May 18 17:47 pipe5
Nimetatud toru loomiseks Linuxis saate mkfifo utiliidi abil järgmiselt.
# mkfifo pipe1 # echo "This is named pipe1" > pipe1
Ülalolevas näites lõin nimega toru nimega pipe1
, seejärel edastasin sellele mõned andmed käsu echo abil, pärast seda muutus kest sisendi töötlemisel interaktiivseks.
Siis avasin teise kesta ja käivitasin teise käsu, et trükkida torule edastatav.
# while read line ;do echo "This was passed-'$line' "; done<pipe1
Socket-failid: Need on failid, mis võimaldavad protsessidevahelist suhtlust, kuid võimaldavad andmeid ja teavet edastada erinevates keskkondades töötavate protsesside vahel.
See tähendab, et pistikupesad võimaldavad andmete ja teabe edastamist võrgus töötavate erinevate masinate vahel.
Pistikupesade töö näitamiseks võiks olla veebibrauser, mis loob ühenduse veebiserveriga.
# ls -l /dev/ | grep "^s"
srw-rw-rw- 1 root root 0 May 18 10:26 log
See on näide sokli loomisest C-s, kasutades socket()
süsteemikõnet.
int socket_desc= socket(AF_INET, SOCK_STREAM, 0 );
Eespool:
-
AF_INET
on aadressiperekond (IPv4) -
SOCK_STREAM
on tüüp (ühendus on suunatud TCP-protokollile) -
0
on protokoll (IP-protokoll)
Socket-failile viitamiseks kasutage failikirjeldajaga sama koodi socket_desc
ja kasutage read()
ja write()
süsteemikõned pesast lugemiseks ja kirjutamiseks.
Need on spetsiaalsed failid, mis talletavad nii tavalisi kui ka muid erifaile ning need on Linuxi failisüsteemis korraldatud hierarhias, alustades kataloogist juurkood (/)
.
Pistikupesade kuvamine kataloogis:
# ls -l / | grep "^d"
drwxr-xr-x 2 root root 4096 May 5 15:49 bin drwxr-xr-x 4 root root 4096 May 5 15:58 boot drwxr-xr-x 2 root root 4096 Apr 11 2015 cdrom drwxr-xr-x 17 root root 4400 May 18 10:27 dev drwxr-xr-x 168 root root 12288 May 18 10:28 etc drwxr-xr-x 3 root root 4096 Apr 11 2015 home drwxr-xr-x 25 root root 4096 May 5 15:44 lib drwxr-xr-x 2 root root 4096 May 5 15:44 lib64 drwx------ 2 root root 16384 Apr 11 2015 lost+found drwxr-xr-x 3 root root 4096 Apr 10 2015 media drwxr-xr-x 3 root root 4096 Feb 23 17:54 mnt drwxr-xr-x 16 root root 4096 Apr 30 16:01 opt dr-xr-xr-x 223 root root 0 May 18 15:54 proc drwx------ 19 root root 4096 Apr 9 11:12 root drwxr-xr-x 27 root root 920 May 18 10:54 run drwxr-xr-x 2 root root 12288 May 5 15:57 sbin drwxr-xr-x 2 root root 4096 Dec 1 2014 srv dr-xr-xr-x 13 root root 0 May 18 15:54 sys drwxrwxrwt 13 root root 4096 May 18 17:55 tmp drwxr-xr-x 11 root root 4096 Mar 31 16:00 usr drwxr-xr-x 12 root root 4096 Nov 12 2015 var
Kataloogi saab teha käsuga mkdir.
# mkdir -m 1666 linux-console.net # mkdir -m 1666 news.linux-console.net # mkdir -m 1775 linuxsay.com
Kokkuvõte
Teil peaks olema nüüd selge arusaam sellest, miks kõik Linuxis on fail ja erinevat tüüpi failid, mida teie Linuxi süsteemist saab väljuda.
Sellele saate lisada rohkem, lugedes rohkem üksikute failitüüpide kohta ja need on loodud. Loodan, et see juhend on kasulik ja kui teil on küsimusi ja lisateavet, mida soovite jagada, jätke kommentaar ja arutame veel.