Deixe o comando remoto em execução, armazenando a saída

Deixe o comando remoto em execução, armazenando a saída

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 screentodos 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 screennã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 tailem 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 screenvocê sempre pode usar nohupe 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 ESCpara sair do modo de rolagem/cópia.

Por padrão, o Screen mantém apenas o valor de 100 linhas. Colocar umdefscrollbackdirectiva no seu .screenrcpara 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 teecom o nome do seu log como parâmetro.

informação relacionada