Qu'est-ce qu'un fichier spécial?

Dans un système d'exploitation d'ordinateur, un fichier spécial est un type de fichier pouvant être stocké dans un système de fichiers. Un fichier spécial est parfois appelé fichier de périphérique .

Le but d'un fichier spécial est d'exposer le périphérique en tant que fichier dans le système de fichiers. Un fichier spécial fournit une interface universelle pour les périphériques matériels (et les périphériques virtuels créés et utilisés par le noyau), car des outils pour les E / S sur fichier peuvent être utilisés pour accéder au périphérique.

Lorsque les données sont en rouge ou écrites dans un fichier spécial, l'opération est immédiate et n'est pas soumise aux règles du système de fichiers conventionnel.

Sous Linux, il existe deux types de fichiers spéciaux: les fichiers spéciaux de bloc et les fichiers spéciaux de caractères .

Un fichier spécial de bloc agit comme une interface directe avec un périphérique de bloc. Un périphérique bloc est un périphérique qui effectue des E / S de données en unités de blocs.

Exemples de fichiers spéciaux de bloc:

  • / dev / sd xn - partitions montées sur des périphériques de stockage physiques. La lettre x fait référence à un périphérique physique et le nombre n à une partition de ce périphérique. Par exemple, / dev / sda1 est généralement la première partition du premier périphérique de stockage physique.
  • / dev / loop n -loop devices. Ce sont des périphériques spéciaux qui permettent à un fichier du système de fichiers d’être utilisé en tant que périphérique bloc. Le fichier peut contenir un système de fichiers complet et être accessible comme s'il s'agissait d'une partition montée sur un périphérique de stockage physique. Par exemple, un fichier image de disque ISO peut être monté en tant que périphérique de boucle.

Si vous voulez savoir quelle est la taille d'un bloc sur votre système, lancez " blockdev --getbsz device " en tant que root, par exemple:

 sudo blockdev --getbsz / dev / sda1 
 4096 

Dans cet exemple, la taille du bloc est de 4096 octets (4 Ko).

Dossiers spéciaux de personnages

Un fichier spécial de caractères est similaire à un périphérique en mode bloc, mais les données sont écrites un caractère (huit bits ou un octet) à la fois.

Exemples de fichiers spéciaux de caractères:

  • / dev / stdin (entrée standard.)
  • / dev / stdout (sortie standard.)
  • / dev / stderr (Erreur standard.)
  • / dev / random (PRNG qui peut retarder le retour d'une valeur pour acquérir une entropie supplémentaire.)
  • / dev / urandom (PRNG qui renvoie toujours une valeur immédiatement, indépendamment de l'entropie requise.)
  • / dev / null (Le périphérique null. La lecture de ce fichier obtient toujours un octet nul; l'écriture dans ce fichier n'a aucun effet.)

Types de fichiers Linux

Dans le noyau Linux, les types de fichiers sont déclarés dans le fichier d’en-tête sys / stat.h. Le nom du type, le nom symbolique et le masque de bits pour chaque type de fichier Linux sont répertoriés ci-dessous.

Comment savoir si un fichier est spécial?

Test de bloc spécial

Sous bash, la commande " test -b fichier " renvoie un état de sortie égal à 0 si le fichier est spécial, ou 1 si le fichier est d'un autre type ou n'existe pas.

 test -b / dev / sda1; echo $? # vérifier le statut spécial de blocage, état de sortie d'écho 
 0 
 test -b / dev / null; echo $? Les fichiers spéciaux # caractère ne sont pas spéciaux en bloc 
 1 

Test de caractère spécial

Pour déterminer si un fichier est un caractère spécial, utilisez " test -c file ":

 test -c / dev / null; echo $? 
 0 

En utilisant stat

Vous pouvez également vérifier le type d'un fichier avec stat :

 stat / dev / sda1 
 Fichier: / dev / sda1 Taille: 0 Blocs: 0 Bloc IO: fichier spécial de bloc 4096 Périphérique: 6h / 6d Inode: 7998 Liens: 1 Type de périphérique: 8, 1 Accès: (0660 / brw-rw ----) Uid : (0 / root) Gid: (6 / disk) Accès: 2018-07-08 06: 41: 25.540000000 -0400 Modifier: 2018-07-08 06: 41: 25.540000000 -0400 Changement: 2018-07-08 06: 41: 25.540000000 -0400 Naissance: - 
 stat / dev / random 
 Fichier: / dev / random Taille: 0 Blocs: 0 Bloc IO: fichier spécial de 4096 caractères Appareil: 6h / 6d Inode: 6518 Liens: 1 Type d'appareil: 1, 8 Accès: (0666 / crw-rw-rw-) Uid: (0 / root) Gid: (0 / root) Accès: 2018-07-08 06: 41: 19.676000000 -0400 Modifier: 2018-07-08 06: 41: 19.676000000 -0400 Changement: 2018-07-08 06:41 : 19.676000000 -0400 Naissance: - 

Inode, Termes du système d'exploitation, Entrée standard (stdin), Sortie standard (stdout)