Paskaidrojums “Viss ir fails” un failu tipi Linux


Ja jūs esat jauns Linux lietotājs vai esat to lietojis dažus mēnešus, jums noteikti ir dzirdējuši vai lasījuši paziņojumus, piemēram, “Linux viss ir fails”.

Patiesībā tas ir taisnība, lai gan tas ir tikai vispārināšanas jēdziens, Unix un tā atvasinājumos, piemēram, Linux, viss tiek uzskatīts par failu. Ja kaut kas nav fails, tam sistēmā jādarbojas kā procesam.

Lai to saprastu, ņemiet, piemēram, vietu, kas atrodas saknes (/) direktorijā, vienmēr patērē dažāda veida Linux faili. Veidojot failu vai pārsūtot failu uz savu sistēmu, tas aizņem nelielu vietu fiziskajā diskā, un tiek uzskatīts, ka tas ir noteiktā formātā (faila tips).

Un arī Linux sistēma neatšķir failus un direktorijus, bet direktoriji veic vienu svarīgu darbu, proti, citus failus glabā grupās hierarhijā, lai ērti atrastos. Visi jūsu aparatūras komponenti tiek attēloti kā faili, un sistēma sazinās ar tiem, izmantojot šos failus.

Ideja ir svarīgs Linux lieliskā īpašuma apraksts, kur ieejas/izvades resursi, piemēram, jūsu dokumenti, direktoriji (mapes Mac OS X un Windows), tastatūra, monitors, cietie diski, noņemamie datu nesēji, printeri, modemi, virtuālie termināļi, kā arī starpprocesu un tīkla komunikācija ir baitu plūsmas, ko nosaka failu sistēmas telpa.

Nozīmīga priekšrocība tam, ka viss ir fails, ir tas, ka iepriekšminētajos ievades/izvades resursos var izmantot to pašu Linux rīku, utilītu un API kopu.

Lai gan viss operētājsistēmā Linux ir fails, ir noteikti īpaši faili, kas ir ne tikai fails, piemēram, ligzdas un nosauktas caurules.

Kādi ir dažādu veidu faili Linux?

Linux operētājsistēmā pamatā ir trīs veidu faili:

  1. Parastie/parastie faili
  2. Īpaši faili
  3. Katalogi

Šie ir failu dati satur tekstu, datus vai programmas instrukcijas, un tie ir visizplatītākie failu veidi, kurus, iespējams, sagaidīsit atrast Linux sistēmā, un tie ietver:

  1. lasāmi faili
  2. Binārie faili
  3. attēlu faili
  4. saspiesti faili un tā tālāk.

Īpašajos failos ietilpst:

Bloķēt failus: tie ir ierīces faili, kas nodrošina buferētu piekļuvi sistēmas aparatūras komponentiem. Tie nodrošina saziņas metodi ar ierīču draiveriem, izmantojot failu sistēmu.

Viens svarīgs aspekts par bloķētajiem failiem ir tas, ka tie noteiktā laikā var pārsūtīt lielu datu un informācijas bloku.

Bloķēto failu ligzdu saraksts direktorijā:

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

Rakstzīmju faili: tie ir arī ierīču faili, kas nodrošina neuzpirktu sērijveida piekļuvi sistēmas aparatūras komponentiem. Viņi strādā, nodrošinot saziņas veidu ar ierīcēm, pārsūtot datus pa vienai rakstzīmei.

Rakstzīmju failu ligzdu saraksts direktorijā:

# 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

Simbolisko saišu faili: simboliskā saite ir atsauce uz citu sistēmas failu. Tāpēc simbolisko saišu faili ir faili, kas norāda uz citiem failiem, un tie var būt gan direktoriji, gan parastie faili.

Simbolisko saišu ligzdu uzskaitīšana direktorijā:

# 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

Jūs varat izveidot simboliskas saites, izmantojot Linux ln utilītu, kā parādīts zemāk esošajā piemērā.

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

Iepriekš minētajā piemērā es izveidoju failu ar nosaukumu file1.txt /tmp direktorijā, pēc tam izveidoju simbolisko saiti /home/tecmint/file1.txt, lai norādītu uz /tmp/file1.txt.

Caurules vai nosauktās caurules: tie ir faili, kas ļauj savstarpēji sazināties, savienojot viena procesa izvadi ar otra ievadi.

Nosauktā caurule faktiski ir fails, kuru izmanto divi procesi, lai sazinātos ar katru, un tas darbojas kā Linux caurule.

Cauruļu kontaktligzdu saraksts direktorijā:

# 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

Varat izmantot utilītu mkfifo, lai izveidotu nosaukto cauruli Linux šādi.

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

Iepriekš minētajā piemērā es izveidoju nosaukto cauruli ar nosaukumu pipe1 , pēc tam pārsūtīju tam dažus datus, izmantojot komandu echo, pēc tam čaula kļuva neaktīva, apstrādājot ievadi.

Tad es atvēru vēl vienu apvalku un izpildīju citu komandu, lai izdrukātu to, kas tika nodots caurulei.

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

Ligzdas faili: Tie ir faili, kas nodrošina starpprocesu komunikāciju, taču tie var pārsūtīt datus un informāciju starp procesu, kas darbojas dažādās vidēs.

Tas nozīmē, ka kontaktligzdas nodrošina datu un informācijas pārsūtīšanu starp procesu, kas darbojas dažādās tīkla mašīnās.

Piemērs, lai parādītu ligzdu darbu, būtu tīmekļa pārlūkprogramma, kas izveido savienojumu ar tīmekļa serveri.

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

Šis ir ligzdas, kas izveidota C, piemērs, izmantojot sistēmas izsaukumu socket() .

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

Iepriekš minētajā:

  1. AF_INET ir adrešu saime (IPv4)
  2. SOCK_STREAM ir tips (savienojums ir orientēts uz TCP protokolu)
  3. 0 ir protokols (IP protokols)

Lai atsauktos uz ligzdas failu, izmantojiet socket_desc , kas ir tāds pats kā faila deskriptors, un izmantojiet read() un write() sistēmas zvani, lai attiecīgi lasītu un rakstītu no kontaktligzdas.

Tie ir īpaši faili, kuros glabājas gan parastie, gan citi īpašie faili, un tie ir sakārtoti Linux failu sistēmā hierarhijā, sākot no saknes (/) direktorija.

Kontaktligzdu uzskaitīšana direktorijā:

# 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

Katalogu var izveidot, izmantojot komandu mkdir.

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

Kopsavilkums

Tagad jums vajadzētu skaidri saprast, kāpēc Linux viss ir fails un dažāda veida faili, kurus var iziet no jūsu Linux sistēmas.

Jūs varat pievienot tam vairāk, lasot vairāk par atsevišķiem failu tipiem un tie tiek izveidoti. Es ceru, ka šī rokasgrāmata būs noderīga, un, ja jums ir kādi jautājumi un papildu informācija, ar kuru jūs labprāt dalītos, lūdzu, atstājiet komentāru, un mēs apspriedīsim vairāk.