Explicació de Tot és un fitxer i tipus de fitxers a Linux


Si sou nou a Linux, o l'heu utilitzat durant uns mesos, haureu d'haver escoltat o llegit declaracions com ara \A Linux, tot és un fitxer.

Això és cert, tot i que només és un concepte de generalització, a Unix i els seus derivats com Linux, tot es considera com un fitxer. Si alguna cosa no és un fitxer, s'ha d'executar com a procés al sistema.

Per entendre-ho, prengui per exemple la quantitat d'espai al directori arrel (/) que sempre consumeixen diferents tipus de fitxers Linux. Quan creeu un fitxer o transferiu un fitxer al vostre sistema, ocupa una mica d'espai al disc físic i es considera que té un format específic (tipus de fitxer).

I també el sistema Linux no diferencia entre fitxers i directoris, però els directoris fan una feina important, és a dir, emmagatzemar altres fitxers en grups en una jerarquia per a una fàcil localització. Tots els components del vostre maquinari es representen com a fitxers i el sistema es comunica amb ells mitjançant aquests fitxers.

La idea és una descripció important d'una gran propietat de Linux, on els recursos d'entrada/sortida com els vostres documents, directoris (carpetes a Mac OS X i Windows), teclat, monitor, discs durs, suports extraïbles, impressores, mòdems, virtuals. els terminals i també la comunicació entre processos i xarxa són fluxos de bytes definits per l'espai del sistema de fitxers.

Un avantatge notable de que tot és un fitxer és que es pot utilitzar el mateix conjunt d'eines, utilitats i API de Linux als recursos d'entrada/sortida anteriors.

Encara que tot a Linux és un fitxer, hi ha certs fitxers especials que són més que un fitxer, per exemple, sòcols i canonades amb nom.

Quins són els diferents tipus de fitxers a Linux?

A Linux hi ha bàsicament tres tipus de fitxers:

  1. Fitxers ordinaris/normals
  2. Fitxers especials
  3. Directoris

Aquestes dades de fitxers contenen text, dades o instruccions del programa i són el tipus de fitxers més comú que podeu esperar trobar en un sistema Linux i inclouen:

  1. Fitxers llegibles
  2. Fitxers binaris
  3. Fitxers d'imatge
  4. Fitxers comprimits, etc.

Els fitxers especials inclouen els següents:

Fitxers de bloqueig: són fitxers de dispositiu que proporcionen accés a la memòria intermèdia als components del maquinari del sistema. Proporcionen un mètode de comunicació amb els controladors de dispositiu mitjançant el sistema de fitxers.

Un aspecte important dels fitxers de blocs és que poden transferir un gran bloc de dades i informació en un moment determinat.

Llistat de sockets de fitxers de bloc en un directori:

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

Fitxers de caràcters: també són fitxers de dispositiu que proporcionen accés en sèrie sense memòria intermèdia als components del maquinari del sistema. Funcionen proporcionant una forma de comunicació amb els dispositius mitjançant la transferència de dades d'un caràcter a la vegada.

Llistat de sockets de fitxers de caràcters en un directori:

# 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

Fitxers d'enllaç simbòlic: un enllaç simbòlic és una referència a un altre fitxer del sistema. Per tant, els fitxers d'enllaç simbòlic són fitxers que apunten a altres fitxers i poden ser directoris o fitxers normals.

Llistat de sockets d'enllaç simbòlic en un directori:

# 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

Podeu fer enllaços simbòlics utilitzant la utilitat ln a Linux com a l'exemple següent.

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

A l'exemple anterior, vaig crear un fitxer anomenat fitxer1.txt al directori /tmp, després vaig crear l'enllaç simbòlic, /home/tecmint/fitxer1.txt per apuntar a /tmp/fitxer1.txt.

Tubs o canonades amb nom: són fitxers que permeten la comunicació entre processos connectant la sortida d'un procés a l'entrada d'un altre.

Una canonada amb nom és en realitat un fitxer que s'utilitza per dos processos per comunicar-se amb cadascun i actua com una canonada Linux.

Llistat de sockets de canonades en un directori:

# 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

Podeu utilitzar la utilitat mkfifo per crear una canonada amb nom a Linux de la següent manera.

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

A l'exemple anterior, vaig crear una canonada amb nom anomenada pipe1, després li vaig passar algunes dades mitjançant l'ordre echo, després que l'intèrpret d'ordres es va tornar no interactiu mentre processava l'entrada.

Llavors vaig obrir un altre intèrpret d'ordres i vaig executar l'altra ordre per imprimir el que es va passar a la canonada.

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

Fitxers socket: són fitxers que proporcionen un mitjà de comunicació entre processos, però poden transferir dades i informació entre processos que s'executen en diferents entorns.

Això vol dir que els sòcols proporcionen transferència de dades i informació entre processos que s'executen en diferents màquines d'una xarxa.

Un exemple per mostrar el treball dels sockets seria un navegador web que es connecta a un servidor web.

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

Aquest és un exemple de creació de socket en C mitjançant la crida al sistema socket().

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

En l'anterior:

  1. AF_INET és la família d'adreces (IPv4)
  2. SOCK_STREAM és el tipus (la connexió està orientada al protocol TCP)
  3. 0 és el protocol (Protocol IP)

Per fer referència al fitxer de socket, utilitzeu socket_desc, que és el mateix que el descriptor del fitxer, i utilitzeu read() i write() crides al sistema per llegir i escriure des del sòcol respectivament.

Aquests són fitxers especials que emmagatzemen tant fitxers ordinaris com altres especials i s'organitzen al sistema de fitxers Linux en una jerarquia a partir del directori arrel (/).

Llistat de sockets en un directori:

# 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

Podeu crear un directori amb l'ordre mkdir.

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

Resum

Ara hauríeu de tenir una comprensió clara de per què tot a Linux és un fitxer i els diferents tipus de fitxers que poden sortir al vostre sistema Linux.

Podeu afegir-hi més informació llegint més sobre els tipus de fitxers individuals i es creen. Espero que aquesta guia sigui útil i per a qualsevol pregunta i informació addicional que us agradaria compartir, deixeu un comentari i en parlarem més.