Atualmente eu configurei a configuração de rolagem do terminal gnome (Editar -> Preferências de perfil -> Rolagem) para 10.000 linhas. Estou tentado a marcar Ilimitado, mas temo que isso possa causar falhas de memória (se eu deixar um programa com muita saída em execução durante a noite, não gostaria que ele travasse por causa disso).
Minhas perguntas são:
Essas linhas de rolagem são armazenadas na memória ou armazenadas em cache em um arquivo no disco?
Se eu mudar de 10.000 para 100.000 ou para 1 milhão, ainda estarei seguro? Quais parâmetros (RAM, espaço livre em disco, número de terminais abertos) preciso levar em consideração)? Selecionar Ilimitado é seguro?
Responder1
Aparentemente está armazenado em arquivos excluídos do disco, de acordo com informações muito interessantespostagem no blog:
Eu poderia apenas ver quais arquivos
gnome-terminal
estavam abertos, paralsof
o resgate. Aí descobri que estava sendo sorrateiro, tinha vários arquivos chamados/tmp/vteXYZ1tv
abertos, mas já os havia deletado. Assim, você não poderá vê-los durante a navegação e eles serão removidos quando o programa for fechado. Isso faz sentido, significa que quando o processo é encerrado, não importa como (pelo menos eu acho), o espaço dos arquivos pode ser recuperado, ou seja, não obteremos arquivos restantes em uma falha do programa, ou umkill -9
. Eles podem ser restaurados, porém, do meu jeito (provavelmente existem outros), foi fazer umls -l
/proc/<gnome-terminal pid>/fd
para ver o que eles apontam. Então você podecat
fazer isso para criar um novo arquivo. Estas são apenas uma cópia literal da saída do terminal. Sem compressão. Não, nada. Acontece que um dos históricos do meu terminal tinha quase 900 MB! Mas isso só aconteceu depois que dados aleatórios foram divulgados muito rapidamente por um bom tempo, o que é improvável de acontecer no uso normal.
E vou enfatizar isso novamente: o pôster já estava rodando base64 < /dev/urandom
há algum tempo, procurando por aumentos no uso de memória ou disco - 900 MB seria um uso excepcional.
Responder2
gnome-terminal
(na verdade vte
) de fato armazena o scrollback em um arquivo excluído imediatamente em /tmp
(mais precisamente: no local do arquivo temporário padrão influenciado por $TMPDIR
e talvez alguns semelhantes).
Este design foi escolhido principalmente para scrollback ilimitado e não causar erros de OOM. É muito menos provável que o disco fique cheio e, mesmo que isso aconteça, é menos prejudicial para todo o sistema do que ficar sem memória.
vte-0.40
(que provavelmente aparecerá no Ubuntu 15.10 WW) irá compactar e criptografar esses arquivos. Isso reduzirá o armazenamento necessário para aproximadamente um terço a quarto de seu tamanho (se seu aplicativo produzir uma quantidade X de dados como texto simples, algo entre X/4 .. X/3 é uma estimativa razoável para o armazenamento que será necessário) e também elimina o problema de privacidade/segurança caso alguém obtenha acesso bruto ao disco rígido.
Estamos planejando adicionar uma opção para armazenar o scrollback na memória, da mesma forma que se você /tmp
estivesse ativado tmpfs
. Se tudo correr como planejado, isso aparecerá vte-0.42
no Ubuntu 16.04 XX LTS. Mas não posso prometer isso.