Como salvar o conteúdo da tela do console não-registrada em um arquivo?

3

Estou em um tty, com muitas entradas de comando, a maior parte de sua saída detalhada e algumas mensagens de erro. Agora eu tenho que pegar todos os textos stdin / stdout / stderr, no formato exibido na tela do console, despejado em um arquivo. Como posso fazer isso usando as ferramentas embutidas (de preferência)?

Eu não sei se a pergunta é confusa! É realmente simples .. Suponha que eu entrei no terminal do console tty1, executei alguns comandos (sem nenhum log ativado, porque eu não senti a necessidade), mas de repente vieram certas saídas / mensagens que eu quero despejar em um arquivo (ou a outra opção pega uma caneta e um papel).

A razão pela qual estou supondo que isso pode ser feito é porque você pode usar o shift + PgUp/PgDwn para alterar as saídas da tela, o que significa que elas ainda estão lá no buffer (mesmo se o processamento for pipelado)! ..e é isso que deve ser recuperado.

    
por precise 23.06.2014 / 14:52

3 respostas

5

Os TTYs usam dispositivos de "memória do console virtual" para armazenar em buffer o conteúdo da tela. Você pode ler mais sobre eles em man vcs , mas isso permitirá que você veja o que está na tela no momento atual .

Na prática, são apenas arquivos numerados em /dev/ que se alinham com o número TTY. Aqui está um exemplo que fiz com o TTY2:

$ sudo fold -w$(stty -F /dev/tty2 size | awk '{print }') /dev/vcs2

Ubuntu 14.04 LTS bert tty2                                                      

bert login: oli                                                                 
Password:                                                                       
oli@bert:~$ cd test                                                             
oli@bert:~/test$ ls                                                             
Madonna - 10 - Bedtime Story.mp3  output_MP3WRAP.mp3                            
Madonna - 11 - Take A Bow.mp3                                                   
oli@bert:~/test$                                       

O fold -w$(...) existe porque a saída em buffer não aparece para ter os caracteres de controle ou novas linhas que eu esperaria. Isso simplesmente adiciona \n no final de cada linha.

Como TuKsn aponta nos comentários, você não precisa mexer com tudo isso, você pode conseguir exatamente o mesmo com:

sudo screendump 2

Você pode colocar > tty.log no final de um dos comandos para gravar a saída em um arquivo chamado tty.log no diretório atual:

sudo screendump 2 > tty.log

Mais uma vez, isso só vai te dar o que está na tela . Mesmo se você aumentar o buffer de rolagem em TTYs, isso não será armazenado na memória acessível . Você pode alterar isso , mas isso envolve recompilar o kernel.

Isso envolveria reinicializar e perder a tela atual , portanto, se você puder fazer isso, haverá opções muito mais fáceis para registrar o IO futuro , como screen ou tmux ou apenas script .

    
por Oli 01.08.2014 / 12:03
1

Provavelmente você pode usar um programa chamado screen . Ele salva toda a saída do Terminal em um arquivo. Dê uma olhada neste tópico do Ubuntu Forums link . CMIIW.

    
por Ade Malsasa Akbar 01.08.2014 / 11:23
0

Como não consigo encontrar nenhum atalho de teclado para Selecionar tudo, descobri que isso pode ajudar ... link Um utilitário de copiar e colar da área de transferência de linha de comando?

O primeiro é a tela, que foi sugerida, mas parece ter um utilitário que copia o texto para que funcione. Entre no modo de cópia com ^ A-Esc. Comece selecionando o texto com espaço e termine de selecionar o texto com espaço. Inserir texto com ^ A -]

O segundo é sobre colar o texto na área de transferência para um arquivo. Eu estou completamente inseguro se algum destes funcionará embora ... Espero que um faça.

    
por Kristóf 01.08.2014 / 11:56