Onde os stdouts passados são armazenados?

1

Eles estão logados em algum lugar? Para onde vai o stdout depois que o terminal morre? Estou ciente que eu poderia salvá-lo facilmente enquanto ele funciona, mas às vezes percebemos que precisamos dele quando o terminal está fora.

    
por Pierre B 10.06.2017 / 19:14

2 respostas

5

Não, uma vez que o terminal se foi, a saída também desapareceu. Algumas delas ainda podem permanecer por algum tempo na memória RAM, algumas podem ter sido salvas em logs devido a várias configurações de registro, mas essencialmente elas foram perdidas. Isso é intencional. Se a informação fosse registrada, ela rapidamente encheria seu disco (os caracteres realmente se acumulam se você usar o shell para tudo), e provavelmente conteria pelo menos algumas informações confidenciais. Uma vez tentei configurar o buffer de rolagem do Terminal do GNOME para ilimitado. Logo depois minha máquina começou a desacelerar. O terminal estava usando toda a minha memória RAM!

Você poderia configurar um registro sofisticado usando algo como exec > /tmp/stdout.log 2> /tmp/stderr.log em seu ~ / .bashrc (não testado) e por exemplo logstash para girar seus registros, mas ainda teria o problema fundamental de manter as informações confidenciais ao redor por um tempo.

O que a maioria das pessoas faz é depender do arquivo de histórico do shell, por exemplo ~ / .bash_history, que armazena os comandos para que você possa reproduzir o resultado.

    
por 10.06.2017 / 19:19
4

Use script ~/terminal_logs/$(date +%Y%m%d-%H%M%S)-$(tty)-$$.log no seu terminal no login. Isso salva sua sessão em um arquivo nomeado a partir da data e hora em que o shell foi iniciado, o terminal e o ID do processo do shell.

Edit: Obrigado ao Gilles pela string de formatação.

    
por 10.06.2017 / 19:55