Dicas
A beleza do screen está no fato de que, se sua sessão principal falhar (o putty fechar), tudo o que você está rodando, mesmo em fg, continuará rodando com
nenhuma perda de dados. Nunca vi um screen travar ou cair, exceto em casos de falha total da máquina Linux. Tenho sessões screen rodando há 20, 30 dias.
Para conquistar vocês, vai um pequeno guia de referência. Obviamente, se não tivermos o screen instalado, devemos instalá-lo. Ele está empacotado para virtualmente todas as distribuições que eu já vi. O já clássico "man screen" ajuda bastante
1) Iniciando o screen:
O screen pode ser rodado na instância do usuário, não sendo necessário ser root da máquina. O comando é:
$ screen
Em algumas instalações, uma tela de about será mostrada com uma mensagem de pressionar algo para finalizar. Finalizaremos a tela de about e cairemos na nossa sessão screen. Se o usuário já tiver uma sessão screen rodando e utilizar o comando acima, outra sessão será criada.
2) Acessando uma sessão screen anteriormente criada
$ screen -x
Anexaremos nossa sessão screen previamente aberta. Se tivermos mais de uma sessão, uma lista delas será mostrada, mais ou menos como abaixo:
$ screen -x
There are several suitable screens on:
~ 9984.pts-1.rimmon (Detached)
~ 9966.pts-1.rimmon (Detached)
~ 9948.pts-1.rimmon (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
Vejamos que há um comentário dizendo que a sessão está "Detached". Sessões Attached estão sendo utilizadas nesse momento, enquanto Detached são sessões das quais o usuário se desconectou, sem encerrá-las.
Fazendo:
$ screen -r 9984.pts-1.rimmon
A sessão entrará em estado attached e trabalharemos com ela. O comando:
$ screen -d 9984.pts-1.rimmon
fará o detach da sessão correspondente.
Meu conselho é manter uma e somente uma sessão aberta, mas vai da necessidade do usuário ter mais.
3) Utilizando
3.1) Criando novos terminais na sessão screen
Uma sessão screen pode ter vários terminais. Quando a iniciamos, temos somente um. Como o interesse é trabalhar com várias "janelas" ou "abas", vamos criá-las.
Todos os comandos de teclas do screen iniciam-se através da combinação da tecla CONTROL e da tecla a. Essa combinação é representada, na man page do screen, como C-a. O comando para criar um novo terminal no screen é o C. Então, pressionamos C-a c criamos um novo terminal e já entramos diretamente nele. Temos agora 2 terminais. Pressionemos o comando de criação mais duas vezes, e teremos 4 terminais
3.2) Destruindo terminais na sessão screen
Um terminal nada mais é do que um shell de usuário. Da mesma forma que utilizamos o comando exit ou C-d para encerrar um shell, utilizamos C-d para encerrar um terminal screen. Isso não irá fechar a sessão screen nem nos fará sair dela, a não ser que o terminal em questão seja o último aberto da sessão.
3.3) Navegando entre terminais na sessão screen
Temos algumas combinações de teclas que nos permitem navegar entre nossos terminais abertos.
a) C-a n e C-a p nos fazem navegar para os terminais próximo e anterior (next, previous).
b) C-a [0-9] permite-nos acessar diretamente um terminal, num máximo de 10. Se tivermos mais terminais abertos, nos valemos do comandos C-a p e C-a n.
c) C-a " (aspa dupla) mostrará uma listagem de todos os terminais que temos abertos e, através das teclas de navegação, poderemos selecionar o que queremos e acessá-lo.
d) C-a (tecla de espaço) é similar ao comando C-a n
3.4) Saindo de uma sessão screen (detach)
O comando C-a d nos fará abandonar a sessão screen sem, entretanto, fechá-la. Todos os terminais abertos permanecerão abertos e todos os processos que deixamos rodando continuarão rodando. Os terminais permanecerão exatamente no mesmo estado em que os deixamos. Para retomar o trabalho, utilizamos o comando screen -x. Abriremos então o terminal screen em que estávamos quando executamos o detach
3.5) Encerrando uma sessão screen
Podemos executar o comando exit ( ou C-d ) até fecharmos todos os terminais screen que temos. Ao fechar o último, screen será finalizado. Há o comando C-a \ que terminará instantaneamente todos os terminais screen que temos e finalizará o screen. Todos os processos que estamos rodando serão mortos. Obviamente, uma confirmação será pedida.
4) Caso interessante
O screen pode ser utilizado para fins educativos ou colaborativos, permitindo que usuários remotamente conectados à máquina vejam o que está acontecendo em uma sessão screen e até mesmo participando do trabalho. Para isso, screen deve ser iniciado em um usuário onde pelo menos duas pessoas possam conectar-se. Um usuário distinto não consegue ver o screen de outro usuário. Por exemplo, se o usuário mrbits está utilizando screen e o usuário cristiano acessa, ele jamais conseguirá ver a screen do mrbits. Para que mrbits e cristiano trabalhem colaborativamente, eles devem ser o mesmo usuário para o sistema. Obviamente, root tem acesso a tudo.
Distribuições como Ubuntu já vêm com um .screenrc cheio de flores e perfumarias.