4 votes

Où sont stockées les informations de défilement du terminal (comment fonctionne tmpfs) ?

En essayant de tester quelque chose de non connecté, j'ai lancé une boucle infinie sur ma terminator émulateur de terminal qui imprimait beaucoup de données sur STDOUT. Après l'avoir fait fonctionner pendant quelques minutes, j'ai remarqué que mon /tmp La partition était pleine.

$ df -h
Filesystem                                   Size  Used Avail  Use%  Mounted on
rootfs                                        68G   21G   44G   33%  /
udev                                          10M     0   10M    0%  /dev
tmpfs                                         800M  1.2M  799M   1%  /run
/dev/disk/by-uuid/e29c6006c5c6                68G   21G   44G   33%  /
tmpfs                                         5.0M     0  5.0M   0%  /run/lock
tmpfs                                         3.2G  140K  3.2G   1%  /run/shm
/dev/sda6                                     290G  204G   72G  75%  /home
/dev/sda3                                      79G   51G   28G  65%  /winblows
tmpfs                                        3.2G   3.2G    0G 100%  /tmp

Cependant, du a montré que le répertoire était vide :

$ du -sch /tmp/
0   /tmp/
0   total

Running rm -rf /tmp n'a pas fait de différence non plus. Tout cet espace occupé a été libéré lorsque j'ai fermé le terminal qui exécutait la boucle, je suppose donc qu'il était occupé par les informations de retour de défilement du terminal.

Je sais que tmpfs est une installation de stockage conçue pour imiter un système de fichiers. OK mais

  1. Comment cela fonctionne-t-il ? Est-ce que /tmp a fichier quelque part (oui, je sais que "tout est un fichier"), je veux dire que c'est un fichier "normal" stocké quelque part sur le disque dur ? Fait-il partie de ma partition swap ? De ma RAM ? Si j'ai bien compris, il peut être soit dans la RAM soit dans la SWAP en fonction de l'utilisation actuelle, mais je n'ai pas vu de pics dans l'utilisation de la RAM ou de la SWAP pendant que j'étais sur le serveur. /tmp était plein.

  2. Où/comment sont conservées les informations de scrollback du terminal ? Puisqu'il n'y avait pas de fichiers dans /tmp il ne peut pas être stocké dans un simple fichier texte, alors où est-il et comment se fait-il qu'il prenne de la place sur /tmp ?

4voto

Scott Points 20468

Je ne suis pas spécialement expert en tmpfs et je n'ai jamais entendu parler de votre terminator émulateur de terminal, mais je peux répondre à la question générale. Il s'agit d'une vieille astuce Unix : créer un fichier (généralement, mais pas nécessairement, dans le répertoire /tmp ), puis le supprimer rapidement. Tant que vous le gardez ouvert, il continue d'exister, il réside sur le système de fichiers (qu'il s'agisse d'un disque, d'une mémoire, d'un système local ou distant), et vous pouvez y écrire et y lire, comme n'importe quel fichier ordinaire. 1 jusqu'à ce que vous la fermiez. Ensuite, elle est réellement supprimée.

____________
1 A part le fait qu'il n'apparaît dans aucun répertoire. On peut le considérer comme un fichier ordinaire qui n'a aucun lien direct avec lui.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X