Recherche de site Web

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 :

  1. Fichiers ordinaires/réguliers
  2. Fichiers spéciaux
  3. 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 :

  1. Fichiers lisibles
  2. Fichiers binaires
  3. Fichiers image
  4. 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.