Pojasnilo “Vse je datoteka” in vrste datotek v Linuxu
Če ste nov v Linuxu ali ga uporabljate nekaj mesecev, ste morali slišati ali prebrati izjave, kot je\"V Linuxu je vse datoteka"
To je v resnici res, čeprav gre zgolj za posploševalni koncept, saj se v Unixu in njegovih izpeljankah, kot je Linux, vse obravnava kot datoteka. Če nekaj ni datoteka, se mora v sistemu izvajati kot postopek.
Da bi to razumeli, vzemite na primer količino prostora v korenskem imeniku (//
), ki ga vedno porabijo različne vrste datotek Linux. Ko ustvarite datoteko ali datoteko prenesete v sistem, zasede nekaj prostora na fizičnem disku in velja za določeno obliko (vrsta datoteke).
In tudi sistem Linux ne razlikuje med datotekami in imeniki, ampak imeniki opravljajo eno pomembno delo, to je shranjevanje drugih datotek v skupine v hierarhiji za lažje iskanje. Vse komponente strojne opreme so predstavljene kot datoteke in sistem z njimi komunicira z njimi.
Ideja je pomemben opis velike lastnosti Linuxa, kjer so vhodni/izhodni viri, kot so dokumenti, imeniki (mape v Mac OS X in Windows), tipkovnica, monitor, trdi diski, izmenljivi mediji, tiskalniki, modemi, virtualni terminali ter tudi medprocesna in omrežna komunikacija so tokovi bajtov, ki jih definira prostor datotečnega sistema.
Opazna prednost vsega, kar je datoteka, je v tem, da je na zgornjih vhodno/izhodnih virih mogoče uporabiti isti nabor orodij, pripomočkov in API-jev Linux.
Čeprav je vse v Linuxu datoteka, obstajajo nekatere posebne datoteke, ki so več kot le datoteke, na primer vtičnice in imenovane cevi.
Katere so različne vrste datotek v Linuxu?
V Linuxu so v bistvu tri vrste datotek:
- Navadne/običajne datoteke
- Posebne datoteke
- Imeniki
To so datoteke, ki vsebujejo besedilo, podatke ali navodila za program in so najpogostejša vrsta datotek, ki jih lahko pričakujete v sistemu Linux, in vključujejo:
- Bralne datoteke
- Binarne datoteke
- Slikovne datoteke
- Stisnjene datoteke in tako naprej.
Posebne datoteke vključujejo naslednje:
Blokiraj datoteke: to so datoteke naprav, ki omogočajo medpomnilniški dostop do komponent sistemske strojne opreme. Zagotavljajo način komunikacije z gonilniki naprav prek datotečnega sistema.
Pomemben vidik blokovnih datotek je, da lahko v določenem trenutku prenesejo velik blok podatkov in informacij.
Naštevanje vtičnic blokovnih datotek v imeniku:
# 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 ...
Datoteke znakov: To so tudi datoteke naprav, ki omogočajo nezaščiten serijski dostop do komponent sistemske strojne opreme. Delujejo tako, da zagotavljajo način komunikacije z napravami s prenosom podatkov po en znak naenkrat.
Naštevanje vtičnic datotek znakov v imeniku:
# 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
Datoteke s simboličnimi povezavami: Simbolična povezava je sklic na drugo datoteko v sistemu. Datoteke s simboličnimi povezavami so torej datoteke, ki kažejo na druge datoteke in so lahko imeniki ali običajne datoteke.
Uvrstitev vtičnic za simbolične povezave v imenik:
# 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
Simbolične povezave lahko ustvarite s pomočjo pripomočka ln
v Linuxu, kot v spodnjem primeru.
# touch file1.txt # ln -s file1.txt /home/tecmint/file1.txt [create symbolic link] # ls -l /home/tecmint/ | grep "^l" [List symbolic links]
V zgornjem primeru sem v imeniku/tmp ustvaril datoteko z imenom file1.txt
, nato pa ustvaril simbolno povezavo /home/tecmint/file1.txt, ki kaže na /tmp/file1.txt.
Cevi ali poimenovane cevi: To so datoteke, ki omogočajo medprocesno komunikacijo s povezovanjem izhoda enega procesa z vhodom drugega.
Imenovana cev je pravzaprav datoteka, ki jo dva procesa uporabljata za komunikacijo z vsako in deluje kot cev Linux.
Naštevanje vtičnic za cevi v imeniku:
# 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
S pripomočkom mkfifo lahko v Linuxu ustvarite poimenovano cev, kot sledi.
# mkfifo pipe1 # echo "This is named pipe1" > pipe1
V zgornjem primeru sem ustvaril poimenovano cev z imenom pipe1
, nato sem ji z ukazom echo posredoval nekaj podatkov, nato pa je lupina med obdelavo vnosa postala ne interaktivna.
Potem sem odprl še eno lupino in zagnal še en ukaz, da natisnem, kaj je bilo posredovano v pipe.
# while read line ;do echo "This was passed-'$line' "; done<pipe1
Datoteke vtičnice: To so datoteke, ki omogočajo medprocesno komunikacijo, vendar lahko prenašajo podatke in informacije med postopki, ki se izvajajo v različnih okoljih.
To pomeni, da vtičnice omogočajo prenos podatkov in informacij med postopki, ki se izvajajo na različnih strojih v omrežju.
Primer za prikaz vtičnic bi bil spletni brskalnik, ki vzpostavi povezavo s spletnim strežnikom.
# ls -l /dev/ | grep "^s"
srw-rw-rw- 1 root root 0 May 18 10:26 log
To je primer vtičnice, ustvarjene v C z uporabo sistemskega klica socket()
.
int socket_desc= socket(AF_INET, SOCK_STREAM, 0 );
V zgornjem:
-
AF_INET
je družina naslovov (IPv4) -
SOCK_STREAM
je vrsta (povezava je usmerjena v protokol TCP) -
0
je protokol (protokol IP)
Za sklicevanje na datoteko vtičnice uporabite socket_desc
, ki je enak deskriptorju datoteke, in uporabite read()
in write()
sistemske klice za branje oziroma pisanje iz vtičnice.
To so posebne datoteke, ki shranjujejo tako navadne kot druge posebne datoteke in so organizirane v datotečnem sistemu Linux v hierarhiji, ki se začne od korenskega imenika (/)
.
Naštevanje vtičnic v imeniku:
# 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
Imenik lahko ustvarite z ukazom mkdir.
# mkdir -m 1666 linux-console.net # mkdir -m 1666 news.linux-console.net # mkdir -m 1775 linuxsay.com
Povzetek
Zdaj bi morali jasno razumeti, zakaj je vse v Linuxu datoteka in različne vrste datotek, ki lahko zapustijo vaš sistem Linux.
K temu lahko dodate več tako, da preberete več o posameznih vrstah datotek in so ustvarjene. Upam, da vam je to navodilo v pomoč in za kakršna koli vprašanja in dodatne informacije, ki bi jih radi delili, pustite komentar in se bomo še pogovorili.