Eu usaria um multiplexador de terminais - tela sendo a mais conhecida, e tmux sendo uma implementação mais recente da ideia. Eu uso o tmux e recomendo que você faça isso.
Basicamente o tmux irá rodar um terminal (ou conjunto de terminais) em um computador. Se você executá-lo em um servidor remoto, você pode desconectá-lo sem que o terminal morra. Então, quando você fizer o login novamente, poderá se reconectar e ver todas as saídas perdidas.
Para começar da primeira vez, basta digitar
tmux
Então, quando você deseja desconectar, você faz Ctrl-B d
(isto é, pressione Ctrl-B, solte as duas teclas e, em seguida, pressione d.
Quando você faz login novamente, pode executar
tmux attach
e você se reconectará ao tmux e verá todas as saídas que aconteceram. Observe que, se você perder acidentalmente a conexão ssh (digamos que sua rede fique inativa), o tmux ainda estará em execução, embora possa pensar que ainda está conectado a uma conexão. Você pode dizer ao tmux para se desconectar da última conexão e conectar-se à sua nova conexão executando
tmux attach -d
Na verdade, você pode usar a opção -d
o tempo todo. Nos servidores, eu tenho isso no meu .bashrc
alias tt='tmux attach -d'
Então, quando eu fizer login, posso digitar tt
e reconectar. Você pode dar um passo adiante se quiser e integrar o comando em um alias para o ssh. Eu corro um cliente de email dentro do tmux em um servidor, e eu tenho um alias local:
alias maileo='ssh -t mail.example.org tmux attach -d'
Isso faz o ssh para o servidor e executa o comando no final - tmux attach -d
A opção -t
garante que um terminal seja iniciado - se um comando for fornecido, ele não será executado em um terminal por padrão. Portanto, agora posso executar maileo
em uma linha de comando local e conectar-me ao servidor e à sessão do tmux. Quando eu me desconectar do tmux, a conexão ssh também é cancelada.
Isso mostra como usar o tmux para seu caso de uso específico, mas o tmux pode fazer muito mais do que isso. Este tutorial do tmux vai te ensinar um pouco mais, e há muito mais lá fora.