Estou usando screen no debian lenny e gostaria de usar o -R
opçã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 corro screen -R
na verdade não se conecta à sessão separada mais jovem. Em vez disso, ele reclama que existem "várias telas adequadas" e que preciso escolher uma delas.
Estou esquecendo de algo? Como faço isso funcionar conforme anunciado?
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 recente. Usando screen -RR
conecta-se à tela 5958. O -RR
options é um pouco mais explicado 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 -S
para dar à tela uma etiqueta/rótulo. Em seguida, você pode reconectar usando essa tag sem ter que lembrar o que estava acontecendo em cada tela se a lista ficar complicada.
Exemplo (telas de inicialização 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)
Note o -dm
opção foi usada apenas para iniciar uma tela separada
E então, em uma data posterior, você pode se reconectar facilmente usando a tag curl
.
# screen -R curl
Eu uso screen -R no gnome-terminal e, como você disse, se 2 sessões estiverem rodando ao mesmo tempo, então o gnome-terminal fecha imediatamente.
Eu resolvi correndo
sh -c "screen -R || screen -D -RR"
isso funciona exatamente como você espera.