Como posso retomar uma tela que não consegui desanexar?

8

Eu uso a tela Consoles visuais da tela . Para desanexar uma tela, preciso pressionar Ctrl+ Aseguido de, Dmas algum tempo uma sessão é fechada sem desanexá-la. Aparece como (Attached)em screen -list:

eduard@eduard-X:~$ screen -list
There are screens on:
        4561.pts-46.eduard-X   (30.03.2015 14:48:51)   (Attached)
        4547.pts-46.eduard-X   (30.03.2015 14:48:33)   (Detached)
        4329.pts-41.eduard-X   (30.03.2015 14:46:28)   (Attached)
        3995.pts-30.eduard-X   (30.03.2015 14:30:01)   (Detached)

Se eu tentar restaurá-lo, a tela responderá que não há tela para continuar:

eduard@eduard-X:~$ screen -r 4329
There is a screen on:
        4329.pts-41.eduard-X   (30.03.2015 14:46:28)   (Attached)
There is no screen to be resumed matching 4329.

Ainda posso retomar uma tela que não desanexei corretamente?

Eduard Florinescu
fonte
2
Copie e cole o texto em vez de usar gráficos.
Celada
@Celada eu adicionei texto em vez de imagens
Eduard Florinescu

Respostas:

12

Claro, com

screen -d -r

Você pode escolher com qual tela desconectar e reconectar como de costume, localizando o pid (ou nome completo) com screen -list.

screen -d -r 12345
Celada
fonte
8

Você deve criar telas com nomes.

$ screen -S foo

$ screen -list
There are screens on:
        16994.foo       (03/30/15 14:05:13)     (Detached)
        20082.q (12/17/14 18:06:44)     (Detached)
        11008.w (11/12/14 10:52:43)     (Detached)
        1199.irc        (11/12/14 01:34:40)     (Detached)

Em seguida, você pode reconectar as telas com

$ screen -dr foo

(que será anexado ao 16994.foo, desanexando qualquer outro processo) ou

$ screen -x i

(que será anexado ao 1999.irc, que COMPARTILHARÁ a tela com outro processo)

Nomear telas é importante, eu sinto.

oPless
fonte
6

Após um comentário sugerido no post, usei:

screen -x <session id>

Na página do manual : screen -x

-x Anexe a uma sessão de tela não desanexada. (Modo de exibição múltipla). Tela se recusa a anexar a partir de si mesma. Mas, quando em cascata várias telas, loops não são detectados; cuidar.

Também pesquisando um pouco, descobri outros usos para essa opção. Usar a tela para interação remota explica que você pode conectar-se a partir de vários terminais, um tipo de sistema de compartilhamento de console remoto, praticamente você pode ver e digitar remotamente em um ambiente compartilhado.

Isso pode ser usado para ensinar os alunos ou configurar coisas com um colega.

Você pode tentar conectar-se à mesma tela a partir de dois terminais diferentes com a mesma identificação de tela. ( screen -x 4329). O que você digita em um pode ser visto no outro e vice-versa.

Eduard Florinescu
fonte