Где хранится информация о прокрутке терминала (как работает tmpfs)?

Пытаясь проверить что-то не связанное, я запустил бесконечный цикл на моем terminator эмулятор терминала, который печатал много данных в STDOUT. Пройдя несколько минут, я заметил, что мой /tmp раздел был полон.

$ 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

Тем не мение, du показал каталог, чтобы быть пустым:

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

Бег rm -rf /tmp не имеет никакого значения либо. Все это занятое пространство было освобождено, когда я закрыл терминал, который выполнял цикл, поэтому я предполагаю, что он был занят информацией прокрутки терминала.

Я знаю, что tmpfs - это хранилище, предназначенное для имитации файловой системы. Да, но

  1. Как это работает? Является /tmp файл где-то (да, я знаю, что "все это файл"), я имею в виду, это "нормальный" файл, хранящийся где-то на жестком диске? Это часть моего раздела подкачки? Моей оперативной памяти? Если я правильно понимаю, это может быть либо в ОЗУ или SWAP в зависимости от текущего использования, но я не видел пиков в использовании ОЗУ или SWAP во время /tmp был полон.

  2. Где / как хранится информация прокрутки с терминала? Так как в /tmp он не может быть сохранен в простом текстовом файле, поэтому, где он находится и почему он занимает место на /tmp?

1 ответ

Решение

Я не особенно эксперт в tmpfsи я никогда не слышал о твоих terminator эмулятор терминала, но я могу обратиться к общему вопросу. Это старый трюк Unix: создать файл (обычно, но не обязательно, в /tmp), а затем быстро удалить его. Пока вы держите его открытым, он продолжает существовать и находится в файловой системе (будь то диск, память, локальный или удаленный), и вы можете записывать в него и читать из него, как любой обычный файл1, до Вы закрываете это. Тогда это действительно удалено.

____________
1 За исключением того факта, что он не отображается ни в одном каталоге. Вы можете думать об этом как об обычном файле, который не имеет жестких ссылок на него.

Другие вопросы по тегам