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

23

Basicamente eu tenho uma sessão de tela remota, que eu gostaria de anexar automaticamente .. Atualmente eu estou fazendo isso com o seguinte comando (como um bookmark iTerm, ou um alias)

ssh host -t screen -x thesessionname

Isso funciona bem, mas se a sessão morrer por qualquer motivo, eu gostaria que ela fosse recriada quando eu me conectar. O sinal -R para screen é quase perfeito:

ssh host -t screen -R -S thesessionname

.. mas se a sessão já estiver anexada, uma segunda sessão será feita (como -R simple procura pela primeira sessão desanexada, se nenhuma for encontrada, ela cria uma nova)

Existe uma maneira de fazer com que o sinalizador -R procure sessões anexadas também e apenas crie um novo se thesessionname não existir?

Se isso não for facilmente realizável, como eu poderia recriar automaticamente a sessão de tela quando ela morre? Talvez um script seja executado pelo cron que procura pela sessão nomeada, criando-a caso ela não exista?

    
por dbr 09.07.2009 / 18:13

3 respostas

27

Diz ao ecrã para ser mais persistente em 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.

Portanto, combine os dois e você deve ter sua solução ("-DR" é equivalente a "-D -R"):

screen -DR <yoursession> 

Além disso, e útil saber, você pode ver as sessões em execução com:

screen -ls
    
por 09.07.2009 / 18:17
11

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 sessões de tela, inicie uma nova.

screen -d -RR

Documentos para isso dizem: "Recoloque uma sessão e, se necessário, separe-a ou crie-a. Use a primeira sessão se houver mais de uma sessão disponível." Basicamente, o double-R faz com que ele procure pela primeira sessão a ser anexada.

screen -D -RR

"Anexe aqui e agora. Seja o que for que isso signifique, basta fazê-lo." Separá 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 irá desanexar sua outra conexão) mas simplesmente sempre se liga a algo se houver algo para se anexar e criar algo se não houver nada para anexar .

    
por 09.07.2009 / 19:01
5

eu uso

screen -dRRS sessname

Eu não quero que todo o meu login no outro shell caia, como -D , e eu definitivamente não quero o modo multi-attach de -x .

    
por 09.07.2009 / 19:12