Como fazer com que a tela -R seja anexada à sessão desanexada mais jovem?

16

Estou usando a tela no debian lenny e gostaria de usar a -Ropção De man screen:

   -R   attempts  to  resume  the  youngest  (in  terms  of creation time)
        detached screen session it finds.  If successful, all  other  com‐
        mand-line  options  are  ignored.   If no detached session exists,
        starts a new session using the specified options, just  as  if  -R
        had  not been specified.

No entanto, quando eu executá screen -R-lo na verdade não anexar a sessão mais jovem destacada. Em vez disso, reclama que existem "várias telas adequadas" e que preciso escolher uma delas.

Estou esquecendo de algo? Como eu faço isso funcionar como anunciado?

Wim Coenen
fonte
11
Note: Time-based session selection is a Debian addition.==> você está usando o padrão screendo Debian ou você mesmo o compilou?
JanC 26/08/10
@ Jan Claeys: Tentei pela primeira vez o binário Lenny do Debian, construindo a tela a partir da fonte mais recente em git: //git.savannah.gnu.org/screen.git. O comportamento foi o mesmo.
Wim Coenen

Respostas:

18

Tente usar screen -RR.

Exemplo:

$ screen -ls
There are screens on:
    5958.pts-3.sys01    (08/26/2010 11:40:43 PM)    (Detached)
    5850.pts-1.sys01    (08/26/2010 11:40:35 PM)    (Detached)
2 Sockets in /var/run/screen/S-sdn.

Observe que a tela 5958 é a mais nova. O uso de screen -RRconecta-se à tela 5958. As -RRopções são um pouco mais explicadas na documentação para -d -RR.

   -d -RR  Reattach a session and if necessary detach or  create  it.  Use
           the first session if more than one session is available.

Outro truque que costumo usar é usar -Spara atribuir uma etiqueta / rótulo à tela. Em seguida, você pode anexar novamente usando essa tag sem precisar se lembrar do que estava acontecendo em cada tela se a lista ficar complicada.

Exemplo (Iniciar telas para vim e curl):

$ screen -dm -S curl
$ screen -dm -S vim 
$ screen -list

There are screens on:  
    11292.vim       (08/27/2010 12:02:53 AM)        (Detached)
    11273.curl      (08/27/2010 12:01:42 AM)        (Detached)

Nota: A -dmopção foi usada apenas para iniciar uma tela separada

E, posteriormente, você poderá reconectar-se facilmente usando a tag curl.

# screen -R curl
David Narayan
fonte
Não é screen -D -RRmelhor que screen -d -RR?
Niutech 29/01
Para economizar tempo com a tecla Shift screen -rr, também funciona.
Fmstrat 11/0518
0

Eu uso o screen -R no gnome-terminal e, como você disse, se duas sessões estiverem sendo executadas ao mesmo tempo, o gnome-terminal será encerrado imediatamente.

Eu o resolvi executando

sh -c "screen -R || screen -D -RR"

isso funciona exatamente como você espera.


fonte
ou simplesmente "screen -RR", conforme sugerido por David: D