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

813
terdon

Пытаясь протестировать что-то не подключенное, я запустил бесконечный цикл на моем 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?

4

1 ответ на вопрос

4
Scott

I’m not specifically expert in tmpfs, and I’ve never heard of your terminator terminal emulator, but I can address the general question.  This is an old Unix trick: create a file (commonly, but not necessarily, in /tmp) and then promptly delete it.  As long as you keep it open, it continues to exist, and resides on the filesystem (be it disk, memory, local, or remote), and you can write to it and read from it, just like any ordinary file1, until you close it.  Then it is really deleted.

____________
1 Except for the fact that it doesn’t appear in any directory.  You can think of it as an ordinary file that happens to have zero hard links to it.

Я правильно понял, что это похоже на работу именованных каналов? terdon 11 лет назад 0
Больше похоже на то, как работают _unonym_ трубы. Scott 11 лет назад 2