Onde as informações de rolagem do terminal são armazenadas (como funciona o tmpfs)?

4

Ao tentar testar algo desconectado, lancei um loop infinito no meu emulador de terminal terminator que imprimiu muitos dados para STDOUT. Depois de executá-lo por alguns minutos, notei que minha partição /tmp estava cheia.

$ 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

No entanto, du mostrou que o diretório está vazio:

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

A execução de rm -rf /tmp também não fez diferença. Todo esse espaço ocupado foi liberado quando eu fechei o terminal que estava executando o loop, então eu acho que ele foi retomado pelas informações de rolagem do terminal.

Eu sei que o tmpfs é um recurso de armazenamento projetado para imitar um sistema de arquivos. OK, mas

  1. Como isso funciona? É /tmp a arquivo em algum lugar (sim, eu sei que "tudo é um arquivo"), quero dizer, é um arquivo "normal" armazenado em algum lugar no disco rígido? É uma parte da minha partição swap? Da minha RAM? Se bem entendi, pode ser em RAM ou SWAP, dependendo do uso atual, mas não vi picos no uso de RAM ou SWAP enquanto /tmp estava cheio.

  2. Onde / como as informações de rolagem do terminal são mantidas? Como não havia arquivos em /tmp , ele não pode ser armazenado em um arquivo de texto simples, então onde está e como é que ele está ocupando espaço em /tmp ?

por terdon 01.02.2013 / 18:09

1 resposta

4

Eu não sou especialista em tmpfs e nunca ouvi falar do seu emulador de terminal terminator , mas posso abordar a questão geral. Este é um truque antigo do Unix: crie um arquivo (geralmente, mas não necessariamente, em /tmp ) e, em seguida, exclua-o imediatamente. Contanto que você o mantenha aberto, ele continuará a existir e residirá no sistema de arquivos (seja disco, memória, local ou remoto), e você poderá escrever nele e ler a partir dele, como qualquer arquivo comum 1 , até que você feche. Então é realmente deletado.

por 01.02.2013 / 18:46