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 terminator emulador de terminal que imprimiu muitos dados para STDOUT. Depois de executá-lo por alguns minutos, notei que minha /tmp partição 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

Contudo, du mostrou o diretório para estar vazio:

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

Corrida 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 disso tmpfs é um recurso de armazenamento projetado para imitar um sistema de arquivos. OK mas

  1. Como é que isso funciona? É /tmp uma 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 eu não vi nenhum picos de RAM ou uso de 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 ele está ocupando espaço /tmp?

terdon
fonte

Respostas:

4

Eu não sou especificamente especialista em tmpfse eu nunca ouvi falar do seu terminator emulador de terminal, mas posso abordar a questão geral. Este é um antigo truque do Unix: crie um arquivo (comumente, mas não necessariamente, em /tmp ) e, em seguida, apague-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.

____________
1 Exceto pelo fato de não aparecer em nenhum diretório. Você pode pensar nisso como um arquivo comum que tem zero links para ele.

Scott
fonte
Eu vejo, estou correto em assumir que isso é semelhante a como pipes nomeados funcionam?
terdon
2
Mais parecido com o caminho sem nome canos de trabalho.
Scott