Bonjour à tous.
L'autre fois j'utilisais une redirection vers /dev/null, comme ca m'arrive régulièrement et je me suis demandé, comment cela fonctionne t'il ? Cela enregistre la sortie dans un fichier, le place dans /dev/null ?
mais /dev/null n'est pas un dossier, si j'en crois la commande file :
/dev/null: character special (1/3)
Alors cela écrirait la sortie dans ce fichier puis seraient écrasées par des données nulles par dessus ?
Ou alors cela renvoie la sortie vers /dev/null, le système supprime /dev/null puis le recréé ?
Mais dans ce cas la, comment fonctionne la commande rm, comment efface t-elle les données ?
Merci d'avance.
PS: je ne sais pas si je suis dans la bonne catégorie, dites le moi si ce n'est pas le cas.
# Fichier système
Posté par cfx . Évalué à 10.
En fait, ce n'est pas un fichier comme les autres.
Dès que quelque-chose écrit dans un "fichier", une fonction est appelée pour consommer les données écrites. Habituellement, c'est une fonction fournie par le pilote du système de fichier, qui se chargera de les retranscrire sur ton disque dur.
Pour
/dev/null
, c'est directement le noyau qui s'en charge. La fonction appelée estwrite_null()
, qui se contente de ne rien faire des données reçues.https://elixir.bootlin.com/linux/v3.2/source/drivers/char/mem.c#L763
https://elixir.bootlin.com/linux/v3.2/source/drivers/char/mem.c#L622
# /dev/null est un fichier spécial
Posté par totof2000 . Évalué à 4. Dernière modification le 09 avril 2018 à 20:00.
Sous Unix, les interfaces vers les périphériques sont des fichiers spéciaux. Par exemple, tu peux trouver des trucs du genre /dev/sda pour ton disque dur, /dev/sda1 pour la première partition, /dev/dsp pour la sortie de la carte son, etc … Derrière chacun de ces fichiers, il y a un pilote de périphérique : pour les disques tu as les pilotes SCSI/SATA…. (je simplifie un peu), derrière /dev/dsp, tu as le pilote de ta carte son.
/dev/null est un fichier vers un périphérique "virtuel", avec un driver qui se contente d'oublier chaque octet qu'on lui envoie. Le fichier /dev/null n'est jamais modifié, mais le pilote correspondant ne fait rien des données qu'on lui envoie.
[^] # Re: /dev/null est un fichier spécial
Posté par lxtrem . Évalué à 2.
Je savais que /dev/sdx représentaient les périphériques mais je ne savais pas du tout de /dev/nul était un périphérique virtuel, merci de l'information.
Ainsi le fichier /dev/null n'est absolument pas touché puisque rien n'est écrit dedans grâce à write_null.
Merci beaucoup pour vos explications !
[^] # Re: /dev/null est un fichier spécial
Posté par Anthony Jaguenaud . Évalué à 7.
En fait, tout les fichiers dans
/dev
finissent dans un driver de périphérique du noyau.Tu as deux types de fichiers, les types
block
qui ont une taille et dans lesquels ont peut se déplacer (les périphériques disque notamment) et les typescaractère
qu’on ne peut lire que en flux, ou on retrouve clavier, souris, RS232, etc.[^] # Re: /dev/null est un fichier spécial
Posté par Cyril Brulebois (site web personnel) . Évalué à 1.
Assez d'accord sur l'idée générale, mais on peut avoir des choses un peu différentes, comme des segments de mémoire partagée (
shm
) ou des (liens symboliques vers des) pipes/sockets.Exemples :
-rw------- 1 postgres postgres 2316 Apr 2 17:19 /dev/shm/PostgreSQL.655730644
et :
/dev/initctl
→/run/systemd/initctl/fifo
prw------- 1 root root 0 Apr 2 17:19 /run/systemd/initctl/fifo
/dev/log
→/run/systemd/journal/dev-log
srw-rw-rw- 1 root root 0 Apr 2 17:19 /run/systemd/journal/dev-log
Debian Consultant @ DEBAMAX
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.