Reconectar ou criar uma sessão de tela nomeada? (ou sessões de tela persistentes)

Reconectar ou criar uma sessão de tela nomeada? (ou sessões de tela persistentes)

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 -Rbandeira para screenéquaseperfeito:

ssh host -t screen -R -S thesessionname

..mas se a sessão já estiver anexada, uma segunda sessão é feita (como -Rsimples procura a primeira sessão desanexada, se nenhuma for encontrada ele cria uma nova)

Existe uma maneira de fazer com que o -Rsinalizador também procure sessões anexadas e só crie uma nova se thesessionnamenã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 -Dacontece, e definitivamente não quero o modo de anexação múltipla do -x.

informação relacionada