Tout est un fichier et types de fichiers sous Linux
Si vous êtes nouveau sur Linux ou si vous l'avez utilisé pendant quelques mois, vous devez avoir entendu ou lu des déclarations telles que \Sous Linux, tout est un fichier.
C'est en fait vrai bien qu'il ne s'agisse que d'un concept de généralisation, sous Unix et ses dérivés comme Linux, tout est considéré comme un fichier. Si quelque chose n'est pas un fichier, il doit s'exécuter en tant que processus sur le système.
Pour comprendre cela, prenons par exemple la quantité d'espace sur votre répertoire racine (/)
qui est toujours consommée par un format spécifique (type de fichier).
De plus, le système Linux ne fait pas de distinction entre les fichiers et les répertoires, mais les répertoires font un travail important, qui consiste à stocker d'autres fichiers dans des groupes dans une hiérarchie pour une localisation facile. Tous vos composants matériels sont représentés sous forme de fichiers et le système communique avec eux à l'aide de ces fichiers.
L'idée est une description importante d'une grande propriété de Linux, où les ressources d'entrée/sortie telles que vos documents, répertoires (dossiers sous Mac OS X et Windows), clavier, moniteur, disques durs, supports amovibles, imprimantes, modems, terminaux virtuels , ainsi que les communications inter-processus et réseau sont des flux d'octets définis par l'espace du système de fichiers.
Un avantage notable du fait que tout est un fichier est que le même ensemble d'outils, d'utilitaires et d'API Linux peut être utilisé sur les ressources d'entrée/sortie ci-dessus. Bien que tout dans Linux soit un fichier, il existe certains fichiers spéciaux qui sont plus qu'un simple fichier, par exemple les sockets et les canaux nommés.
Différents types de fichiers sous Linux ?
Sous Linux, il existe essentiellement trois types de fichiers :
- Fichiers ordinaires/réguliers
- Fichiers spéciaux
- Répertoires
Fichiers ordinaires/réguliers
Ce sont des fichiers contenant du texte, des données ou des instructions de programme. Il s'agit du type de fichiers le plus courant que vous pouvez vous attendre à trouver sur un système Linux. Ils incluent :
- Fichiers lisibles
- Fichiers binaires
- Fichiers image
- Fichiers compressés, etc.
Fichiers spéciaux
Les fichiers spéciaux incluent les éléments suivants :
Fichiers de bloc Linux
Ce sont des fichiers de périphérique qui fournissent un accès tamponné aux composants matériels du système. Ils fournissent une méthode de communication avec les pilotes de périphériques via le système de fichiers.
Un aspect important des fichiers blocs est qu'ils peuvent transférer un grand bloc de données et d'informations à un moment donné.
Liste des sockets de fichiers de blocs dans un répertoire à l'aide de la commande ls :
# ls -l /dev | grep "^b" brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 loop0 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 loop1 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 loop2 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 loop3 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 loop4 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 loop5 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 loop6 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 loop7 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 sda brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 sda1 brw-rw---- root disk 0 B Wed Apr 26 08:39:10 2023 sda2 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 sdb brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 sdb1 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 sdb2 brw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 sdb3 ...
Fichiers de caractères Linux
Ce sont également des fichiers de périphérique qui fournissent un accès série sans tampon aux composants matériels du système. Ils fonctionnent en fournissant un moyen de communication avec les appareils en transférant les données un caractère à la fois.
Lister les sockets des fichiers de caractères dans un répertoire :
# ls -l /dev | grep "^c" crw-r--r-- root root 0 B Wed Apr 26 08:39:09 2023 autofs crw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 btrfs-control crw--w---- root tty 0 B Wed Apr 26 08:39:09 2023 console crw------- root root 0 B Wed Apr 26 08:39:09 2023 cpu_dma_latency crw------- root root 0 B Wed Apr 26 08:39:09 2023 cuse crw------- root root 0 B Wed Apr 26 08:39:09 2023 ecryptfs crw-rw---- root video 0 B Wed Apr 26 08:39:09 2023 fb0 crw-rw-rw- root root 0 B Wed Apr 26 08:39:09 2023 full crw-rw-rw- root root 0 B Wed Apr 26 08:39:09 2023 fuse crw------- root root 0 B Wed Apr 26 08:39:09 2023 hidraw0 crw------- root root 0 B Wed Apr 26 08:39:09 2023 hidraw1 crw------- root root 0 B Wed Apr 26 08:39:09 2023 hidraw2 crw------- root root 0 B Wed Apr 26 08:39:09 2023 hidraw3 crw------- root root 0 B Wed Apr 26 08:39:09 2023 hpet crw------- root root 0 B Wed Apr 26 08:39:09 2023 hwrng crw------- root root 0 B Wed Apr 26 08:39:09 2023 i2c-0 crw------- root root 0 B Wed Apr 26 08:39:12 2023 i2c-1 crw------- root root 0 B Wed Apr 26 08:39:12 2023 i2c-2 crw------- root root 0 B Wed Apr 26 08:39:12 2023 i2c-3 crw-r--r-- root root 0 B Wed Apr 26 08:39:09 2023 kmsg crw-rw----+ root kvm 0 B Wed Apr 26 08:39:09 2023 kvm crw-rw---- root disk 0 B Wed Apr 26 08:39:09 2023 loop-control crw-rw---- root lp 0 B Wed Apr 26 08:39:09 2023 lp0 crw------- root root 0 B Wed Apr 26 08:39:09 2023 mcelog crw------- root root 0 B Wed Apr 26 08:39:09 2023 mei0 ...
Fichiers de liens symboliques Linux
Un lien symbolique est une référence à un autre fichier du système. Par conséquent, les fichiers de liens symboliques sont des fichiers qui pointent vers d'autres fichiers, et ils peuvent être soit des répertoires, soit des fichiers normaux.
Liste des sockets de liens symboliques dans un répertoire :
# ls -l /dev/ | grep "^l" lrwxrwxrwx root root 13 B Wed Apr 26 08:39:04 2023 fd ⇒ /proc/self/fd lrwxrwxrwx root root 11 B Wed Apr 26 08:39:04 2023 core ⇒ /proc/kcore lrwxrwxrwx root root 12 B Wed Apr 26 08:39:09 2023 initctl ⇒ /run/initctl lrwxrwxrwx root root 28 B Wed Apr 26 08:39:09 2023 log ⇒ /run/systemd/journal/dev-log lrwxrwxrwx root root 4 B Wed Apr 26 08:39:09 2023 rtc ⇒ rtc0 lrwxrwxrwx root root 15 B Wed Apr 26 08:39:04 2023 stderr ⇒ /proc/self/fd/2 lrwxrwxrwx root root 15 B Wed Apr 26 08:39:04 2023 stdin ⇒ /proc/self/fd/0 lrwxrwxrwx root root 15 B Wed Apr 26 08:39:04 2023 stdout ⇒ /proc/self/fd/1 ...
Vous pouvez créer des liens symboliques à l'aide de l'utilitaire ln
sous Linux, comme dans l'exemple ci-dessous.
# touch file1.txt # ln -s file1.txt /home/tecmint/file1.txt [create symbolic link] # ls -l /home/tecmint/ | grep "^l" [List symbolic links]
Dans l'exemple ci-dessus, j'ai créé un fichier appelé file1.txt
dans le répertoire /tmp, puis j'ai créé le lien symbolique, /home/tecmint/file1.txt< pour pointer vers /tmp/file1.txt.
Linux Pipes ou Named Pipes
Ce sont des fichiers qui permettent la communication inter-processus en connectant la sortie d'un processus à l'entrée d'un autre. Un tube nommé est en fait un fichier utilisé par deux processus pour communiquer entre eux et il agit comme un tube Linux.
Lister les sockets pipes dans un répertoire :
# ls -l | grep "^p" prw-rw-r-- 1 tecmint tecmint 0 Apr 18 17:47 pipe1 prw-rw-r-- 1 tecmint tecmint 0 Apr 18 17:47 pipe2 prw-rw-r-- 1 tecmint tecmint 0 Apr 18 17:47 pipe3 prw-rw-r-- 1 tecmint tecmint 0 Apr 18 17:47 pipe4 prw-rw-r-- 1 tecmint tecmint 0 Apr 18 17:47 pipe5
Vous pouvez utiliser l'utilitaire mkfifo pour créer un tube nommé sous Linux comme suit.
# mkfifo pipe1 # echo "This is named pipe1" > pipe1
Dans l'exemple ci-dessus, j'ai créé un tube nommé appelé pipe1
, puis je lui ai transmis des données à l'aide de la commande echo, après quoi le shell est devenu non interactif lors du traitement de l'entrée.
Ensuite, j'ai ouvert un autre shell et exécuté une autre commande pour imprimer ce qui a été transmis au tuyau.
# while read line ;do echo "This was passed-'$line' "; done<pipe1
Fichiers de socket Linux
Ce sont des fichiers qui fournissent un moyen de communication inter-processus, mais ils peuvent transférer des données et des informations entre des processus s'exécutant sur des environnements différents.
Cela signifie que les sockets assurent le transfert de données et d'informations entre les processus s'exécutant sur différentes machines d'un réseau.
Un exemple pour montrer le travail des sockets serait un navigateur Web établissant une connexion à un serveur Web.
# ls -l /dev/ | grep "^s" srw-rw-rw- 1 root root 0 Apr 18 10:26 log
Voici un exemple de socket créé en C en utilisant l'appel système socket()
.
int socket_desc= socket(AF_INET, SOCK_STREAM, 0 );
Au dessus:
AF_INET
est la famille d'adresses (IPv4)SOCK_STREAM
est le type (la connexion est orientée protocole TCP)0
est le protocole (Protocole IP)
Pour faire référence au fichier de socket, utilisez le socket_desc
, qui est le même que le descripteur de fichier, et utilisez read()
et write()
appels système pour lire et écrire à partir du socket respectivement.
Répertoires spéciaux Linux
Ce sont des fichiers spéciaux qui stockent à la fois des fichiers ordinaires et d'autres fichiers spéciaux et ils sont organisés sur le système de fichiers Linux dans une hiérarchie à partir du répertoire racine (/)
.
Lister les sockets dans un répertoire :
# ls -l / | grep "^d" drwxr-xr-x root root 4.0 KB Fri Apr 21 10:21:42 2023 boot drwxr-xr-x root root 4.0 KB Wed Oct 6 22:55:05 2021 cdrom drwxr-xr-x root root 4.4 KB Wed Apr 26 08:39:12 2023 dev drwxr-xr-x root root 12 KB Sat Apr 22 10:59:02 2023 etc drwxr-xr-x root root 4.0 KB Wed Oct 6 22:55:12 2021 home drwx------ root root 16 KB Wed Oct 6 22:52:31 2021 lost+found drwxr-xr-x root root 4.0 KB Thu Oct 7 18:03:09 2021 media drwxr-xr-x root root 4.0 KB Mon Jul 18 11:34:54 2022 mnt drwxr-xr-x root root 4.0 KB Tue Apr 4 15:09:01 2023 opt dr-xr-xr-x root root 0 B Wed Apr 26 08:39:04 2023 proc drwx------ root root 4.0 KB Fri Apr 7 11:28:42 2023 root drwxr-xr-x root root 1.1 KB Wed Apr 26 08:44:09 2023 run drwxr-xr-x root root 4.0 KB Wed Dec 15 13:23:40 2021 srv dr-xr-xr-x root root 0 B Wed Apr 26 08:39:04 2023 sys drwxrwxrwt root root 4.0 KB Wed Apr 26 10:14:23 2023 tmp drwxr-xr-x root root 4.0 KB Sat Jul 3 22:29:26 2021 usr drwxr-xr-x root root 4.0 KB Thu Mar 30 10:46:04 2023 var
Vous pouvez créer un répertoire à l'aide de la commande mkdir.
# mkdir -m 1666 linux-console.net # mkdir -m 1666 news.linux-console.net # mkdir -m 1775 linuxsay.com
Résumé
Vous devriez maintenant comprendre clairement pourquoi tout dans Linux est un fichier et les différents types de fichiers qui peuvent exister sur votre système Linux.
Vous pouvez ajouter plus à cela en lisant plus sur les types de fichiers individuels et ils sont créés. J'espère que vous trouverez ce guide utile et pour toute question et information supplémentaire que vous aimeriez partager, veuillez laisser un commentaire et nous en discuterons davantage.