
Cenário;
Fiz SSH em uma máquina, abri uma nova sessão de tela e disparei um script.
Alguns dias depois, eu volto por SSH para aquela máquina, reconecto a sessão de tela e observo a saída que foi gerada; Não consigo rolar a saída.
Pelo que posso ver, screen armazena uma "tela no valor" da saída stdout. Se meu script gerou 100 linhas de saída em 48 horas, não consigo ver tudo, apenas as últimas 40 linhas ímpares ou mais. Existe uma maneira de armazenar screen
todos os stdout do script que deixo em execução, para que eu possa anexar novamente a tela e PgUp/PgDn através dela como se fosse um script em execução na minha máquina local?
Talvez screen
não seja a maneira ideal de fazer isso? Existe um método melhor para deixar scripts em execução em máquinas remotas após o logout e poder reconectar-se a esse processo posteriormente e visualizar toda a saída?
Responder1
Você pode simplesmente armazenar a saída em um arquivo
my_command > mylogfile
Se você quiser ver o que está acontecendo enquanto o comando está sendo executado, você pode usar tail
em uma segunda tela:
tail -f mylogfile
Você não só poderá ver toda a saída, mas também processá-la (comparar, pesquisar, ...)
Editarse não quiser usar screen
você sempre pode usar nohup
e fechar a sessão
nohup my_command > mylogfile &
Responder2
Você também pode ativar o registro de saída com o parâmetro -L ao iniciar a tela, por meio de:
screen -L -S <screen_name>
Isso criará um arquivo de log chamado screenlog.0 no diretório em que você iniciou a tela a partir do comando acima.
Para visualizar o screenlog.0 use cat (não vi)SO Ref..
cat screenlog.0
Responder3
A tela mantém um registro das linhas de saída anteriores; ele é chamado de “buffer de histórico de rolagem” na documentação do Screen.
Para navegar pela rolagem, pressione C-a ESC
(copy
). Você pode usar as teclas de seta e PgUp/ PgDnpara navegar, bem comooutras chavespara pesquisar e copiar texto. Pressione ESC
para sair do modo de rolagem/cópia.
Por padrão, o Screen mantém apenas o valor de 100 linhas. Colocar umdefscrollback
directiva no seu .screenrc
para alterar este número.
Se você quiser um log completo do seu script, salve-o em um arquivo. Execute-o dentro da tela para poder conectar-se novamente ao shell pai e ver facilmente se o script ainda está em execução, suspendê-lo e reiniciá-lo, etc.comnohup
. Para monitorar o arquivo de log enquanto ele cresce, use tail -f
.
Responder4
Se você quiser ver a saída na tela e também registrá-la, basta canalizá-la tee
com o nome do seu log como parâmetro.