GNU/Linux >> Tutoriels Linux >  >> Linux

Tout est un fichier sous Linux - Partie 1

Divisé en 2 parties, dans cette première partie, je vais introduire le concept selon lequel tout est fichier et présenter les périphériques spéciaux /dev/null, /dev/zero, /dev/random et /dev/full . La partie 2 consistera à présenter des fonctionnalités didactiques intéressantes à ce sujet, par exemple, comment transformer un fichier en partition !

Présentation

  • Qu'est-ce que c'est ?

Tout est fichier est le concept de la façon dont le système enregistre et conserve tout dans sa structure. Contrairement aux autres systèmes d'exploitation, les systèmes d'exploitation de type UNIX traitent tout comme un fichier commun.

Cela signifie que non seulement les partitions sont montées en tant que fichiers, mais aussi les répertoires de périphériques spécifiques tels que la RAM, les smartphones, les disques externes, et les disques de support optique sont tous des fichiers. En plus de cela, les sockets et les pipes sont aussi des fichiers !

De plus, chaque terminal TTY - ceux que vous ouvrez avec CTRL ALT F1 – sont des « fichiers » aux yeux du système.

Répertoire /dev

Si vous parcourez le répertoire /dev, vous verrez tous les fichiers correspondant aux montages système par rapport aux autres supports. C'est comme si vous branchiez un téléphone portable sur l'ordinateur, un disque dur externe ou même une clé USB et que tout devenait "un fichier" pour le système d'exploitation.

Les partitions système sont les fichiers commençant par "sd " dans le dossier /dev. Dans le même dossier, les TTY sont des périphériques TeleTypewriter, le terminal shell auquel on accède par le "CTRL ALT F1 " commande. Déjà, les blocs d'assemblage utilisés par le système de support optique (DVD, CD, etc.) se trouvent également dans ce dossier, dans les fichiers répertoriés "loop ".

Appareils spéciaux

La plus grande curiosité de ce post est à cause de ces 4 petits fichiers dans le dossier /dev :  full, zero, random et null. Pouvez-vous différencier la fonction de chacun d'eux ? Leur point commun réside dans le fait qu'il s'agit de « fichiers spéciaux ” et non de simples répertoires.

Périphérique nul :/dev/null

Le périphérique null (device null) est généralement utilisé pour supprimer le flux de sortie d'un processus dont le résultat n'a pas d'importance pour une raison quelconque. Il sert également de dossier vide de commodité. Généralement, cette opération est effectuée via une commande de redirection sur la console système. Tout fichier envoyé à l'appareil "/dev/null" disparaîtra à jamais en raison de la façon dont il fonctionne, abandonnant les données instantanément.

C'est comme un grand trou noir, une ordure qui ne se remplit jamais.

​Poétiquement, les programmeurs font beaucoup de blagues sur /dev/null à cause de cette particularité.

Essayez la commande suivante :$ echo "Hello World" Vous verrez "Hello World" comme résultat de la commande.

Essayez maintenant :

$ echo “Hello World”> /dev/null

Retournera une sortie vide. Autrement dit, rien ne se passera.

Parce que la sortie de la commande "Hello world" est allée vers Nulle part.
Elle a été avalée par un trou noir.

Il est allé rendre visite à Courage the Cowardly Dog in Nowhere! Ou tout autre endroit fou que votre imagination vous permet.

​/dev/null pour les systèmes basés sur UNIX fonctionne comme un trou noir :

Ce qui y est envoyé ne revient pas ! Laissons les blagues de côté, en gros, la sortie de commande du processus n'était pas stockée, c'était un rejet direct comme si elle n'avait jamais été générée.

Périphérique plein :/dev/full

Sous Linux, l'appareil toujours plein est un fichier spécial qui renvoie toujours le même code d'erreur lorsqu'il est accédé en écriture :ENOSPC – ce qui signifie "Il n'y a pas d'espace disponible sur l'appareil “.

De plus, il a une autre fonction :Parce qu'il est toujours plein, il fournit un nombre infini de caractères nuls (NULL) à tout processus qui y accède en lecture. Cet appareil est couramment utilisé pour tester le comportement d'un programme lorsqu'il rencontre une erreur due à un disque mémoire plein !

Essayez la commande suivante :$ echo "Hello world"> /dev/fullCela donnera à cet appareil une erreur complète, imitant un disque dur encombré !
bash : echo :erreur d'écriture :il ne reste plus d'espace sur l'appareil

Périphérique zéro :/dev/zero

Sur les systèmes d'exploitation de type Unix, /dev/zero est un fichier spécial qui indique le nombre de caractères nuls qui y sont lus : le NULL de la table ASCII, 0x00 ; et non le caractère "zéro digit", "0", dont la valeur est 0x30–.

Le flux de caractères nuls généré par ce périphérique peut, par exemple, être utilisé pour écraser des informations sur un disque (pour le nettoyer) ou pour générer un fichier propre de taille X à l'infini. Le système BSD l'utilise en implémentant une mémoire partagée via la fonction mmap , qui mappe/dev/zéro à la RAM.

Crée un gros fichier vide appelé "test" :

$ dd if=/dev/ zero of=/home/
$ USER /test count=1000 bs=1000

Si vous n'imposez pas de limite à la commande, en obtenant comme "dd if=/dev/zero of=/home / $ USER/test", vous verrez un fichier qui grossira tendant vers l'infini ; il ne cesse de croître que lorsque le lecteur de disque est plein, ce qui entraîne une erreur "pas d'espace disque disponible".

Cette commande est intéressante lorsque vous souhaitez récupérer une clé USB dont la table de partition est corrompue et irrécupérable. Le jj commande force l'écriture, et /dev/zero remplira chaque bloc de stockage, avec des zéros. Il sera dans un état neuf, vous obligeant à utiliser ultérieurement un programme tel que Disks ou Gparted pour reconstruire votre table de partition !

​Soyez prudent avec cette commande, si la sortie est de =/dev/sda1, vous mettrez à zéro tout votre disque sda1 (le remplira de zéros) rendant les fichiers irrécupérables.

Périphérique aléatoire :/dev/random

Cela fonctionne en utilisant la même logique que /dev/zero, mais en remplissant un disque ou en créant un fichier de taille n avec des valeurs aléatoires, générées à partir d'un traitement informatique, en collectant des caractères d'information GPU, de la mémoire RAM, etc.

/Dev/random doit être approprié pour les utilisations qui nécessitent des nombres aléatoires de haute qualité, comme un pad à usage unique ou la génération de clé publique pour SSH et d'autres réseaux de partage.

Curiosité rapide !

Que se passe-t-il si nous envoyons le nulle part ? C'est-à-dire si nous envoyons le contenu de /dev/zero à /dev/null

$ sudo dd if =/dev/zero of=/dev/null

Cette commande va générer un fichier qui tend vers l'infini, qui sera enregistré dans le dispositif spatial infini – Notre trou noir ! En pratique, cela n'endommage pas les disques matériels car aucune donnée n'est réellement générée et écrite sur le disque. Mais du point de vue du noyau, il y a là un transfert de données :il va générer une forte consommation CPU, qui va sélectionner l'un des cœurs pour générer un tel traitement occupant 100 % d'utilisation.

Ce type de commande est utilisé pour les tests de performances, par exemple, pour vérifier le comportement de l'ordinateur avec le processeur à 100 % d'utilisation.

Conclusion

Dans cet article, vous avez appris plus de détails sur la façon dont les systèmes basés sur UNIX reconnaissent les périphériques et comment tout est "fichier". Ils connaissaient également des détails sur les appareils spéciaux.

Dans le prochain article de la série, je parlerai de quelques utilitaires intéressants pour ces appareils, par exemple, créer une partition à partir d'un fichier, entre autres curiosités que je ne veux pas commenter pour ne pas gâcher !


Linux
  1. Comment déplacer un fichier sous Linux

  2. Comprendre les autorisations de fichiers Linux

  3. Linux - Tout est un fichier ?

  4. Trier une partie d'un fichier ?

  5. Quelle est une alternative à Everything search pour Linux ?

Commande Stat sous Linux

Compression de fichiers Linux :tout ce que vous devez savoir

Autorisations de fichiers Linux :tout ce que vous devez savoir

Tout est un fichier sous Linux - Partie 2

Comment ajouter un nouveau périphérique au système de fichiers BTRFS sous Linux

Commandes Linux fréquemment utilisées par les administrateurs système Linux - Partie 5