Basicamente, tenho uma sessão de tela remota, à qual desejo reconectar automaticamente. Atualmente estou fazendo isso com o seguinte comando (como um marcador do iTerm ou um alias)
ssh host -t screen -x thesessionname
Isso funciona bem, mas se a sessão morrer por qualquer motivo, gostaria que ela fosse recriada na próxima conexão. A -R
bandeira para screen
équaseperfeito:
ssh host -t screen -R -S thesessionname
..mas se a sessão já estiver anexada, uma segunda sessão é feita (como -R
simples procura a primeira sessão desanexada, se nenhuma for encontrada ele cria uma nova)
Existe uma maneira de fazer com que o -R
sinalizador também procure sessões anexadas e só crie uma nova se thesessionname
não existir?
Se isso não for fácil, como eu poderia recriar automaticamente a sessão de tela quando ela morrer? Talvez um script executado via cron que procure a sessão nomeada, criando-a caso ela não exista?
Responder1
Diga à tela para ser um pouco mais persistente ao tentar:
-D -R
Attach here and now. In detail this means: If a session is run-
ning, then reattach. If necessary detach and logout remotely
first. If it was not running create it and notify the user.
This is the author's favorite.
Então combine os dois e você deverá ter sua solução ("-DR" é equivalente a "-D -R"):
screen -DR <yoursession>
Além disso, e é útil saber, você pode visualizar sessões em execução com:
screen -ls
Responder2
Algumas boas opções. Primeiro, meu favorito:
screen -x -R
Isso será anexado à primeira sessão de tela disponível (compartilhando se outra conexão estiver conectada) e, se não houver nenhuma sessão de tela, iniciará uma nova.
screen -d -RR
Os documentos para isso dizem "Reanexe uma sessão e, se necessário, desanexe ou crie-a. Use a primeira sessão se mais de uma sessão estiver disponível." Basicamente, o duplo R faz com que procure a primeira sessão à qual anexar.
screen -D -RR
"Anexar aqui e agora. Seja o que for que isso signifique, apenas faça." Desconectará e desconectará remotamente quaisquer outras sessões anexadas e anexará à primeira sessão que puder. Basicamente, faz o que for necessário para anexar a uma sessão existente e cria uma nova se não houver nada lá.
O primeiro (-x -R) é o menos provável de causar problemas (não desconectará sua outra conexão), mas simplesmente sempre se conecta a algo se houver algo para anexar e cria algo se não houver nada para anexar.
Responder3
eu uso
screen -dRRS sessname
Não quero que todo o meu login no outro shell seja descartado, como -D
acontece, e definitivamente não quero o modo de anexação múltipla do -x
.