29Jul

Que signifie "tout est un fichier" dans 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». Il s'agit d'une simplification excessive, mais comprendre ce que cela signifie vous aidera à comprendre le fonctionnement de Linux.

Beaucoup de choses sur Linux apparaissent dans votre système de fichiers, mais ce ne sont pas vraiment 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 être situés dans des systèmes de fichiers pseudo ou virtuels tels que / dev, qui contient des fichiers spéciaux représentant des périphériques, et / proc, qui contient des fichiers spéciaux représentant des informations système et de processus.

/ proc

Par exemple, disons que vous voulez trouver des informations sur votre CPU.Le répertoire / proc contient un fichier spécial - /proc/ cpuinfo - qui contient cette information.

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 au terminal. Vous pouvez même ouvrir /proc/ cpuinfo dans un éditeur de texte pour afficher son contenu.

Rappelez-vous, /proc/ cpuinfo n'est pas un fichier texte contenant cette information - le noyau Linux et le système de fichiers proc nous exposent cette information sous forme de fichier. Cela nous permet d'utiliser des outils familiers pour voir et travailler avec l'information.

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

  • /proc/ uptime - Expose le temps de disponibilité de votre noyau Linux - en d'autres termes, depuis combien de temps votre système fonctionne sans s'éteindre.
  • /proc/ version - Expose la version de votre noyau Linux.

/ dev

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

Vous voulez monter votre CD-ROM?Exécutez la commande mount et spécifiez /dev/ cdrom comme périphérique que vous souhaitez monter. Voulez-vous 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. Voulez-vous formater la première partition sur votre premier disque dur? Exécutez une commande de formatage et dites-lui de formater /dev/ sda1.

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 accéder aux périphériques et y accéder.

/dev/ null, /dev/ random et /dev/ zéro

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

  • /dev/ null - Ignore toutes les données qui y sont écrites - pensez-y comme une poubelle ou un trou noir. Si vous voyez un commentaire vous disant d'envoyer des plaintes à /dev/ null - c'est une façon geeky de dire "jetez-les dans la poubelle."
  • /dev/ random - Produit aléatoire en utilisant le bruit de l'environnement. C'est un générateur de nombres aléatoires que vous pouvez exploiter.
  • /dev/ zero - Produit des zéros - un flux constant de zéros.

Si vous pensez à ces trois fichiers, vous ne verrez pas d'utilisation pour eux. Au lieu de cela, pensez-y comme des outils.

Par exemple, par défaut, les commandes Linux produisent des messages d'erreur et d'autres sorties qu'ils impriment sur la sortie standard, normalement le terminal. Si vous voulez exécuter une commande et 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 d'avoir chaque commande implémente son propre "mode silencieux", vous pouvez utiliser cette méthode avec n'importe quelle commande. Commande

& gt;/dev/ null

Si vous vouliez une source d'aléatoire - par exemple, pour générer une clé de cryptage, 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 mise à zéro d'un disque - vous pouvez utiliser les utilitaires standard et le zéro /dev/.Par exemple, la commande dd lit à partir d'un emplacement et écrit dans un autre emplacement. La commande suivante lirait les zéros de /dev/ zéro et les écrirait directement sur la première partition du disque dur de votre système, en effaçant complètement son contenu.

( Avertissement : Cette commande effacera toutes les données de votre première partition si vous l'exécutez. Exécutez cette commande uniquement si vous voulez détruire des données.)

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

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

Clarification

En pratique, il est plus précis 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 ces choses ne soient techniquement pas des fichiers, elles sont accessibles dans le système de fichiers - le système de fichiers est un «espace de noms» universel où tout est accessible. Voulez-vous 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écessaire.

Bien sûr, certaines choses ne sont pas réellement des fichiers - les processus qui s'exécutent 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.