in

Que signifie «tout est un fichier» sous Linux?

L’une des caractéristiques déterminantes de Linux et d’autres systèmes d’exploitation de type UNIX est que «tout est un fichier». C’est une simplification excessive, mais comprendre ce que cela signifie vous aidera à comprendre comment fonctionne Linux.

De nombreux éléments sous Linux apparaissent dans votre système de fichiers, mais ce ne sont pas en fait des fichiers. Ce sont des fichiers spéciaux qui représentent des périphériques matériels, des informations système et d’autres éléments, y compris un générateur de nombres aléatoires.

Ces fichiers spéciaux peuvent se trouver dans des systèmes de fichiers pseudo ou virtuels tels que / dev, qui contient des fichiers spéciaux qui représentent des périphériques, et / proc, qui contient des fichiers spéciaux qui représentent des informations système et de processus.

/ proc

Par exemple, disons que vous souhaitez trouver des informations sur votre CPU. Le répertoire / proc contient un fichier spécial – / proc / cpuinfo – qui contient ces informations.

image

Vous n’avez pas besoin d’une commande spéciale qui vous indique les informations de votre CPU – vous pouvez simplement lire le contenu de ce fichier en utilisant n’importe quelle commande standard qui fonctionne avec des fichiers en texte brut. Par exemple, vous pouvez utiliser la commande cat / proc / cpuinfo pour imprimer le contenu de ce fichier sur le terminal – en imprimant les informations de votre CPU sur le terminal. Vous pouvez même ouvrir / proc / cpuinfo dans un éditeur de texte pour afficher son contenu.

N’oubliez pas que / proc / cpuinfo n’est pas en fait un fichier texte contenant ces informations – le noyau Linux et le système de fichiers proc nous les exposent sous forme de fichier. Cela nous permet d’utiliser des outils familiers pour visualiser et travailler avec les informations.

image

Le répertoire / proc contient également d’autres fichiers similaires, par exemple:

  • / proc / uptime – Expose le temps de fonctionnement de votre noyau Linux – en d’autres termes, combien de temps votre système a été allumé sans s’arrêter.
  • / proc / version – Expose la version de votre noyau Linux.

/ dev

Dans le répertoire / dev, vous trouverez des fichiers qui représentent des périphériques – ainsi que des fichiers qui représentent d’autres choses spéciales. Par exemple, / dev / cdrom est votre lecteur de CD-ROM. / dev / sda représente votre premier disque dur, tandis que / dev / sda1 représente la première partition de votre premier disque dur.

Vous souhaitez monter votre CD-ROM? Exécutez la commande mount et spécifiez / dev / cdrom comme périphérique que vous souhaitez monter. Vous souhaitez partitionner votre premier disque dur? Exécutez un utilitaire de partitionnement de disque et spécifiez / dev / sda comme disque dur que vous souhaitez modifier. Vous voulez formater la première partition sur votre premier disque dur? Exécutez une commande de formatage et indiquez-lui de formater / dev / sda1.

image

Comme vous pouvez le voir, exposer ces périphériques dans le cadre du système de fichiers a ses avantages. Le système de fichiers fournit un «espace de nom» cohérent que toutes les applications peuvent utiliser pour adresser et accéder aux périphériques.

/ dev / null, / dev / random et / dev / zero

Le système de fichiers / dev ne contient pas seulement des fichiers qui représentent des périphériques physiques. Voici trois des appareils spéciaux les plus remarquables qu’il contient:

  • / dev / null – Rejette toutes les données qui y sont écrites – considérez-le comme une poubelle ou un trou noir. Si jamais vous voyez un commentaire vous demandant d’envoyer des plaintes à / dev / null, c’est une façon geek de dire «jetez-les à la poubelle».
  • / dev / random – Produit un caractère aléatoire en utilisant le bruit ambiant. C’est un générateur de nombres aléatoires dans lequel vous pouvez puiser.
  • / dev / zero – Produit des zéros – un flux constant de zéros.

Si vous considérez ces trois fichiers comme des fichiers, vous ne verrez pas leur utilité. Au lieu de cela, considérez-les comme des outils.

Par exemple, par défaut, les commandes Linux produisent des messages d’erreur et d’autres sorties qu’elles impriment sur la sortie standard, normalement le terminal. Si vous voulez exécuter une commande et que vous ne vous souciez pas de sa sortie, vous pouvez rediriger cette sortie vers / dev / null. La redirection de la sortie d’une commande vers / dev / null la supprime immédiatement. Au lieu que chaque commande implémente son propre «mode silencieux», vous pouvez utiliser cette méthode avec n’importe quelle commande.

commande> / dev / null

image

Si vous vouliez une source d’aléa – disons, pour générer une clé de chiffrement, vous n’auriez pas besoin d’écrire votre propre générateur de nombres aléatoires – vous pourriez utiliser / dev / random.

Pour effacer le contenu d’un disque dur en y écrivant des 0, vous n’avez pas besoin d’un utilitaire spécial dédié à la remise à zéro d’un disque – vous pouvez utiliser les utilitaires standard et / dev / zero. Par exemple, le jj La commande lit à partir d’un emplacement et écrit dans un autre emplacement. La commande suivante lit les zéros de / dev / zéro et les écrit directement sur la première partition de disque dur de votre système, effaçant complètement son contenu.

(Attention: Cette commande effacera toutes les données de votre première partition si vous l’exécutez. N’exécutez cette commande que si vous souhaitez détruire des données.)

dd si = / dev / zéro de = / dev / sda1

Ici, nous utilisons dd avec des fichiers spéciaux (/ dev / zero et / dev / sda1), mais nous pourrions également utiliser dd pour lire et écrire dans des fichiers réels. La même commande fonctionne à la fois pour manipuler directement les périphériques et pour travailler avec des fichiers.

Clarification

En pratique, il est plus exact de dire que «tout est un flux d’octets» que «tout est un fichier». / dev / random n’est pas un fichier, mais c’est certainement un flux d’octets. Et, bien que techniquement ces éléments ne soient pas des fichiers, ils sont accessibles dans le système de fichiers – le système de fichiers est un «espace de nom» universel où tout est accessible. Vous souhaitez accéder à un générateur de nombres aléatoires ou lire directement à partir d’un appareil? Vous trouverez les deux dans le système de fichiers; aucune autre forme d’adressage n’est nécessaire.

Bien sûr, certaines choses ne sont pas réellement des fichiers – les processus exécutés sur votre système ne font pas partie du système de fichiers. «Tout est un fichier» est inexact, mais beaucoup de choses se comportent comme des fichiers.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Pourquoi les anciens programmes ne fonctionnent pas sur les versions modernes de Windows (et comment vous pouvez les exécuter quand même)

Ils ne valent pas mieux que les bon marché

Ils ne valent pas mieux que les bon marché