Ufafanuzi wa Kila kitu ni Faili na Aina za Faili katika Linux


Ikiwa wewe ni mgeni kwa Linux, au umeitumia kwa miezi michache, basi lazima uwe umesikia au kusoma taarifa kama vile \Katika Linux, kila kitu ni Faili.

Hiyo ni kweli ingawa ni dhana ya jumla tu, katika Unix na derivatives yake kama vile Linux, kila kitu kinazingatiwa kama faili. Ikiwa kitu sio faili, basi lazima iwe inaendesha kama mchakato kwenye mfumo.

Ili kuelewa hili, chukua kwa mfano kiasi cha nafasi kwenye saraka yako ya mizizi (/) hutumiwa na aina tofauti za faili za Linux. Unapounda faili au kuhamisha faili kwenye mfumo wako, inachukua nafasi fulani kwenye diski ya kimwili na inachukuliwa kuwa katika muundo maalum (aina ya faili).

Na pia mfumo wa Linux hautofautishi kati ya faili na saraka, lakini saraka hufanya kazi moja muhimu, ambayo ni kuhifadhi faili zingine kwa vikundi katika safu kwa eneo rahisi. Vipengee vyako vyote vya maunzi vinawakilishwa kama faili na mfumo huwasiliana navyo kwa kutumia faili hizi.

Wazo ni maelezo muhimu ya mali kubwa ya Linux, ambapo rasilimali za pembejeo/pato kama vile hati zako, saraka (folda kwenye Mac OS X na Windows), kibodi, kidhibiti, diski kuu, midia inayoweza kutolewa, vichapishi, modemu, mtandao pepe. vituo na pia mchakato wa kati na mawasiliano ya mtandao ni mikondo ya baiti zinazofafanuliwa na nafasi ya mfumo wa faili.

Faida inayojulikana ya kila kitu kuwa faili ni kwamba seti sawa ya zana za Linux, huduma na API zinaweza kutumika kwenye rasilimali za pembejeo/pato zilizo hapo juu.

Ingawa kila kitu kwenye Linux ni faili, kuna faili fulani maalum ambazo ni zaidi ya faili tu kwa mfano soketi na bomba zilizopewa jina.

Ni aina gani tofauti za faili kwenye Linux?

Katika Linux kimsingi kuna aina tatu za faili:

  1. Faili za Kawaida/Kawaida
  2. Faili Maalum
  3. Saraka

Hizi ni data za faili zina maandishi, data au maagizo ya programu na ndio aina ya kawaida ya faili unazoweza kutarajia kupata kwenye mfumo wa Linux na zinajumuisha:

  1. Faili zinazoweza kusomeka
  2. Faili za jozi
  3. Faili za picha
  4. Faili zilizobanwa na kadhalika.

Faili maalum ni pamoja na zifuatazo:

Zuia faili : Hizi ni faili za kifaa ambazo hutoa ufikiaji ulioakibishwa kwa vipengee vya maunzi ya mfumo. Wanatoa njia ya mawasiliano na madereva ya kifaa kupitia mfumo wa faili.

Kipengele kimoja muhimu kuhusu faili za kuzuia ni kwamba zinaweza kuhamisha kizuizi kikubwa cha data na habari kwa wakati fulani.

Kuorodhesha soketi za faili kwenye saraka:

# 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
...

Faili za wahusika : Hizi pia ni faili za kifaa ambazo hutoa ufikiaji wa mfululizo usio na buffer kwa vipengele vya maunzi ya mfumo. Wanafanya kazi kwa kutoa njia ya mawasiliano na vifaa kwa kuhamisha data herufi moja kwa wakati mmoja.

Kuorodhesha soketi za faili za wahusika kwenye saraka:

# 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

Faili za kiungo za ishara : Kiungo cha ishara ni rejeleo la faili nyingine kwenye mfumo. Kwa hivyo, faili za kiunganishi za mfano ni faili zinazoelekeza faili zingine, na zinaweza kuwa saraka au faili za kawaida.

Kuorodhesha soketi za kiungo za mfano kwenye saraka:

# 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

Unaweza kutengeneza viungo vya ishara kwa kutumia ln shirika katika Linux kama katika mfano ulio hapa chini.

# touch file1.txt
# ln -s file1.txt /home/tecmint/file1.txt  [create symbolic link]
# ls -l /home/tecmint/ | grep "^l"         [List symbolic links]

Katika mfano ulio hapo juu, niliunda faili inayoitwa file1.txt katika saraka ya /tmp, kisha nikaunda kiungo cha mfano, /home/tecmint/file1.txt ili kuelekeza kwa /tmp/file1.txt.

Mabomba au Mabomba Yanayoitwa : Hizi ni faili zinazoruhusu mawasiliano baina ya mchakato kwa kuunganisha matokeo ya mchakato mmoja na ingizo la mwingine.

Bomba lililopewa jina ni faili ambayo hutumiwa na michakato miwili kuwasiliana na kila moja na inafanya kazi kama bomba la Linux.

Kuorodhesha soketi za bomba kwenye saraka:

# 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

Unaweza kutumia matumizi ya mkfifo kuunda bomba iliyopewa jina katika Linux kama ifuatavyo.

# mkfifo pipe1
# echo "This is named pipe1" > pipe1

Katika mfano huo hapo juu, niliunda bomba linaloitwa pipe1, kisha nikapitisha data kwake kwa kutumia amri ya echo, baada ya hapo ganda halikuingiliana wakati wa kusindika pembejeo.

Kisha nikafungua ganda lingine na kuendesha amri nyingine ya kuchapisha kile kilichopitishwa kwa bomba.

# while read line ;do echo "This was passed-'$line' "; done<pipe1

Faili za soketi : Hizi ni faili zinazotoa njia ya mawasiliano baina ya mchakato, lakini zinaweza kuhamisha data na taarifa kati ya mchakato unaoendeshwa kwenye mazingira tofauti.

Hii inamaanisha kuwa soketi hutoa uhamishaji wa data na habari kati ya mchakato unaoendeshwa kwenye mashine tofauti kwenye mtandao.

Mfano wa kuonyesha kazi ya soketi itakuwa kivinjari cha wavuti kinachounganisha kwenye seva ya wavuti.

# ls -l /dev/ | grep "^s"
srw-rw-rw-  1 root root             0 May 18 10:26 log

Huu ni mfano wa soketi iliyoundwa katika C kwa kutumia soketi() simu ya mfumo.

int socket_desc= socket(AF_INET, SOCK_STREAM, 0 );

Katika hapo juu:

  1. AF_INET ndio familia ya anwani(IPv4)
  2. SOCK_STREAM ni aina (muunganisho unazingatia itifaki ya TCP)
  3. 0 ni itifaki(Itifaki ya IP)

Ili kurejelea faili ya soketi, tumia socket_desc, ambayo ni sawa na kifafanuzi cha faili, na utumie read() na write() simu za mfumo kusoma na kuandika kutoka kwa tundu kwa mtiririko huo.

Hizi ni faili maalum ambazo huhifadhi faili za kawaida na zingine maalum na zimepangwa kwenye mfumo wa faili wa Linux katika safu kuanzia mzizi (/) saraka.

Kuorodhesha soketi kwenye saraka:

# 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

Unaweza kutengeneza saraka kwa kutumia amri ya mkdir.

# mkdir -m 1666 linux-console.net
# mkdir -m 1666 news.linux-console.net
# mkdir -m 1775 linuxsay.com

Muhtasari

Unapaswa sasa kuwa na ufahamu wazi wa kwa nini kila kitu kwenye Linux ni faili na aina tofauti za faili ambazo zinaweza kutoka kwenye mfumo wako wa Linux.

Unaweza kuongeza zaidi kwa hili kwa kusoma zaidi kuhusu aina za faili za kibinafsi na zinaundwa. Natumai mwongozo huu utapata msaada na kwa maswali na habari yoyote ya ziada ambayo ungependa kushiriki, tafadhali acha maoni na tutajadili zaidi.