Erklärung vum Alles ass eng Datei an Aarte vu Dateien am Linux


Wann Dir nei op Linux sidd, oder et fir e puer Méint benotzt hutt, da musst Dir Aussoe wéi Am Linux, alles e Fichier héieren oder gelies hunn.

Dat ass tatsächlech wouer obwuel et just e Generaliséierungskonzept ass, an Unix a sengen Derivate wéi Linux gëtt alles als Datei ugesinn. Wann eppes net eng Datei ass, da muss et als Prozess am System lafen.

Fir dëst ze verstoen, huelt zum Beispill d'Quantitéit u Plaz op Ärem root (/) Verzeechnes gëtt ëmmer vu verschiddenen Aarte vu Linux Dateien verbraucht. Wann Dir eng Datei erstellt oder eng Datei op Äre System transferéiert, besetzt se e bësse Plaz op der kierperlecher Disk an et gëtt als an engem spezifesche Format (Dateityp) ugesinn.

An och de Linux System ënnerscheet net tëscht Dateien an Verzeichnisser, awer Verzeichnisser maachen eng wichteg Aarbecht, dat ass aner Dateien a Gruppen an enger Hierarchie fir einfach Plaz ze späicheren. All Är Hardware Komponente ginn als Dateien duergestallt an de System kommunizéiert mat hinnen mat dëse Dateien.

D'Iddi ass eng wichteg Beschreiwung vun enger grousser Eegentum vu Linux, wou Input/Output Ressourcen wéi Är Dokumenter, Verzeichnisser (Ordner am Mac OS X a Windows), Tastatur, Monitor, Harddisken, eraushuelbare Medien, Dréckeren, Modem, virtuell Terminals an och Inter-Prozess- an Netzwierkkommunikatioun si Streame vu Bytes definéiert vum Dateisystemraum.

E bemierkenswäerte Virdeel fir alles wat eng Datei ass ass datt deeselwechte Set vu Linux Tools, Utilities an APIs op den uewe genannten Input/Output Ressourcen benotzt kënne ginn.

Och wann alles am Linux eng Datei ass, ginn et bestëmmte speziell Dateien déi méi wéi nëmmen eng Datei sinn, zum Beispill Sockets a genannt Päifen.

Wat sinn déi verschidden Aarte vu Dateien am Linux?

Am Linux ginn et haaptsächlech dräi Aarte vu Dateien:

  1. Allgemeng/Reegelméisseg Dateien
  2. Speziell Dateien
  3. Verzeichnungen

Dëst sinn Dateidaten enthalen Text, Daten oder Programminstruktiounen a si sinn déi heefegst Aart vu Dateien déi Dir kënnt erwaarden op engem Linux System ze fannen a si enthalen:

  1. Liesbare Dateien
  2. Binär Dateien
  3. Bilddateien
  4. Kompriméiert Dateien a sou weider.

Besonnesch Dateien enthalen déi folgend:

Blockdateien: Dëst sinn Apparatdateien déi gebufferten Zougang zu System Hardware Komponenten ubidden. Si bidden eng Method fir Kommunikatioun mat Apparat Chauffeuren duerch de Fichier System.

Ee wichtegen Aspekt iwwer Blockdateien ass datt se e grousse Block vun Daten an Informatioun zu enger bestëmmter Zäit kënne transferéieren.

Oplëschtung vun Blockdateien Sockets an engem Verzeechnes:

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

Charakterdateien: Dëst sinn och Apparatdateien déi ongebufferten Serien Zougang zu System Hardware Komponenten ubidden. Si funktionnéieren andeems se e Wee fir Kommunikatioun mat Apparater ubidden andeems Dir Daten ee Charakter gläichzäiteg transferéiert.

Oplëschtung Charakterdateien Sockets an engem Verzeechnes:

# 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

Symbolesch Linkdateien: E symbolesche Link ass eng Referenz op eng aner Datei am System. Dofir sinn symbolesch Linkdateien Dateien déi op aner Dateien weisen, a si kënnen entweder Verzeechnes oder regulär Dateie sinn.

Oplëschtung vun symbolesche Link Sockets an engem Verzeechnes:

# 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

Dir kënnt symbolesch Linken mat der ln Utility am Linux maachen wéi am Beispill hei ënnen.

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

Am uewe genannte Beispill hunn ech e Fichier mam Numm file1.txt am /tmp-Verzeichnis erstallt, duerno de symbolesche Link erstallt, /home/tecmint/file1.txt fir op /tmp/file1.txt ze weisen.

Pipes oder Named Pipes: Dëst sinn Dateien déi d'Inter-Prozess Kommunikatioun erlaben andeems Dir den Output vun engem Prozess mam Input vun engem aneren verbënnt.

E genannte Päif ass tatsächlech eng Datei déi vun zwee Prozesser benotzt gëtt fir mat all ze kommunizéieren an et handelt als Linux Päif.

Oplëschtung vu Päifen Sockets an engem Verzeechnes:

# 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

Dir kënnt de mkfifo Utility benotze fir e genannte Pipe an Linux ze kreéieren wéi follegt.

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

Am uewe genannte Beispill hunn ech e genannte Päif mam Numm Pipe1 erstallt, duerno hunn ech e puer Daten mat dem Echo Kommando iwwerginn, duerno gouf d'Shell oninteraktiv beim Veraarbechtung vum Input.

Dunn hunn ech eng aner Shell opgemaach an deen anere Kommando ausgefouert fir auszedrécken wat op d'Päif weidergeleet gouf.

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

Socket Dateien: Dëst sinn Dateien déi e Mëttel fir Inter-Prozess Kommunikatioun ubidden, awer si kënnen Daten an Informatioun transferéieren tëscht Prozesser déi a verschiddenen Ëmfeld lafen.

Dëst bedeit datt Sockets Daten- an Informatiounstransfer tëscht Prozesser déi op verschiddene Maschinnen op engem Netzwierk lafen.

E Beispill fir d'Aarbecht vu Sockets ze weisen wier e Webbrowser, deen eng Verbindung mat engem Webserver mécht.

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

Dëst ass e Beispill vun engem Socket erstallt am C andeems Dir de Socket() Systemruff benotzt.

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

An der uewen:

  1. AF_INET ass d'Adressfamill (IPv4)
  2. SOCK_STREAM ass den Typ (Verbindung ass TCP Protokoll orientéiert)
  3. 0 ass de Protokoll (IP Protokoll)

Fir op d'Socket-Datei ze referenzéieren, benotzt den socket_desc, deen d'selwecht ass wéi de Dateideskriptor, a benotzt read() an write() System rifft aus dem Socket ze liesen a schreiwen bzw.

Dëst sinn speziell Dateien déi souwuel normal wéi och aner speziell Dateien späicheren a si sinn am Linux Dateiesystem an enger Hierarchie organiséiert, déi vum Root (/) Verzeichnis ufänkt.

Oplëschtung Sockets an engem Verzeechnes:

# 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

Dir kënnt e Verzeichnis mam mkdir Kommando maachen.

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

Resumé

Dir sollt elo e kloert Verständnis hunn firwat alles am Linux eng Datei ass an déi verschidden Aarte vu Dateien déi op Ärem Linux System erausgoen.

Dir kënnt méi zu dësem addéieren andeems Dir méi iwwer déi eenzel Dateitypen liest a si ginn erstallt. Ech hoffen dat fannt dëse Guide hëllefräich a fir all Froen an zousätzlech Informatioun déi Dir gär géift deelen, verloosst w.e.g. e Kommentar a mir wäerte méi diskutéieren.