Preciso salvar toda a saída do Screen em um arquivo para verificar mais tarde todo o conteúdo.
O motivo é que estou descarregando uma memória flash através de uma porta serial, usando o Screen para fazer interface com ela. Gostaria de salvá-lo em um arquivo para verificar a estrutura da memória.
Eu tentei:
$: screen /dev/ttyUSB0 115200 >> foo.txt
$: screen /dev/ttyUSB0 115200 | tee foo.txt
E também tentei usar o arquivo de buffer da tela, mas não entendo como usá-lo.
Existe uma maneira fácil?
logging
buffer
dump
gnu-screen
Edoardoo
fonte
fonte
Respostas:
Há uma opção de linha de comando para o log. A saída é salva no arquivo screenlog.n, em que n é um número da tela. Nas páginas do manual da tela:
fonte
find / -name "screen*log"
que não encontrou nada.Você também pode usar Control-a + H para salvar registros no arquivo screenlog.n. Mais um Control-a + H para desligar.
Ca H: Inicia / encerra o log da janela atual no arquivo "screenlog.n".
fonte
a
+:
e digite por exemplochdir /home/foobar/baz
A resposta selecionada não funciona muito bem com várias sessões e não permite especificar um nome de arquivo de log personalizado.
Para várias sessões de tela, esta é minha fórmula:
Crie um arquivo de configuração para cada processo:
Se você quiser fazê-lo "on the fly", você pode alterar
logfile
automaticamente.\012
significa "nova linha", pois o uso\n
será impresso no arquivo de log: origem .Inicie seu comando com os sinalizadores "-c" e "-L":
É isso aí. Você verá "test.log" após o primeiro flush:
Eu descobri que "-L" ainda é necessário, mesmo quando "logon" está no arquivo de configuração.
Não consegui encontrar uma lista das variáveis de formato de hora (como% m) usadas pela tela. Se você possui um link desses formatos, poste abaixo.
Extra
Caso você queira fazê-lo "on the fly", você pode usar este script:
Para usá-lo, salve-o (screen.sh) e defina + x permissões:
... e executará ./test.pl e criará um arquivo de log em /var/log/TEST.log
fonte
on-the-fly
parte é super útil.screen -r
com"Unable to open "/tmp/log.conf"
. Além disso, a tela passou de[detached]
estado para inexistente. Qual poderia ter sido o problema?screen bash
. Se qualquer outro processo estiver matando sua tela, ela deverá ser listada como 'morta', mas não desaparecerá. Não tenho certeza do que pode ser.O comando a seguir funciona para a versão de tela 4.06.02:
Na página de manual da Tela :
Você pode verificar a versão existente do Screen usando a versão screen . Você pode baixar e instalar a versão mais recente da tela em https://www.gnu.org/software/screen/ .
fonte
Para o terminal Mac:
Detalhes
script
: Um aplicativo interno para "criar um texto datilografado da sessão do terminal"-a
: Anexar ao arquivo de saída-t 0
: O tempo entre a gravação no arquivo de saída é de 0 segundos; portanto, out.txt é atualizado para cada novo caractereout.txt
: É apenas o nome do arquivo de saídascreen /dev/ttyUSB0 115200
: Comando da pergunta para conectar a um dispositivo externoVocê pode usar o tail para verificar se o arquivo está sendo atualizado.
fonte
Ctrl+Aentão Shift+Hfunciona para mim. Você pode visualizar o arquivo
screenlog.0
enquanto o programa ainda está em execução.fonte
O comando 'script' no Unix deve fazer o truque. Basta executá-lo no início do seu novo console e você deve ser bom.
fonte
Aqui está um truque: envolva-o
sh -c
!Onde
2>&1
redireciona o stderr para o stdout,tee
pode capturar e registrar mensagens de erro.fonte
O seguinte pode ser útil (testado em: Linux / Ubuntu 12.04 (Precise Pangolin)):
Usando o descrito acima, você pode fazer todas as orientações necessárias. Por exemplo, para despejar a saída no seu console enquanto salva no seu arquivo, você deve:
fonte
Uma resposta diferente se você precisar salvar a saída de todo o buffer de rolagem a partir de uma tela já em execução:
Isso salvará seu buffer inteiro em / tmp / screen-exchange
fonte
O registro de tela existente pode ser salvo por:
Ctrl+A : cópia impressa -h nome do arquivo
fonte