Como recuperar uma sessão de tela 'perdida'?

76

De alguma forma, eu consegui fechar uma janela de tela sem tela 'percebendo', então a sessão ainda está marcada como attached . Isso me impede de voltar a anexar a esta sessão. O que posso fazer?

me@iupr-serv8:~$ screen -r
There are several suitable screens on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:34 PM)    (Attached)
    24658.pts-19.XXX-serv8  (01/05/2012 07:11:38 PM)    (Detached)
    24509.pts-19.XXX-serv8  (01/05/2012 07:10:00 PM)    (Detached)
    18676.pts-5.XXX-serv8   (01/02/2012 06:55:33 PM)    (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
me@XXX-serv8:~$ screen -r 25028
There is a screen on:
    25028.pts-19.XXX-serv8  (01/05/2012 07:15:33 PM)    (Attached)
There is no screen to be resumed matching 25028.

[atualização]

No final, descobri que a sessão não foi perdida, mas o ID da primeira sessão é 0 . A segunda sessão do que a ID 1 .

    
por Framester 09.01.2012 / 15:40

4 respostas

105

Tente desanexá-lo primeiro com screen -d . Se isso não funcionar, você pode tentar, em ordem crescente de ênfase ,

   -d|-D [pid.tty.host]
        does  not  start screen, but detaches the elsewhere running screen session. It has the
        same effect as typing "C-a d" from screen's controlling terminal. -D is the equivalent
        to  the  power  detach key.  If no session can be detached, this option is ignored. In
        combination with the -r/-R option more powerful effects can be achieved:

   -d -r   Reattach a session and if necessary detach it first.

   -d -R   Reattach a session and if necessary detach or even create it first.

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

   -D -r   Reattach a session. If necessary detach and logout remotely first.

   -D -R   Attach  here and now. In detail this means: If a session is running, 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.

   -D -RR  Attach here and now. Whatever that means, just do it.
    
por 09.01.2012 / 15:50
5
screen -r '1234.somescreensession'

Existe uma tela em:

1234.somescreensession (anexado)

Não há tela a ser retomada correspondendo a 1234.somescreensession.

Aqui está uma maneira simples de recuperar essa sessão de tela.

screen -D -r '1234.somescreensession'
    
por 24.10.2015 / 07:21
3

Eu experimentei o mesmo problema depois que minha conexão ssh fechou inesperadamente com a mensagem Write Failed: broken pipe enquanto eu tinha uma sessão de tela anexada. No entanto, não consegui fazer com que minha sessão de tela fosse reconectada usando qualquer um dos comandos acima. Note que eu uso a seguinte versão:

~> screen --version
Screen version 4.00.03 (FAU) 23-Oct-06

Aparentemente, ainda havia uma instância de sshd em execução, o que me impediu de separar e reconectar a sessão. Depois de identificar o PID da instância apropriada de sshd e kill ing, consegui reconectar com screen -r .

Apenas para obter informações: você definitivamente encontrará mais de um sshd demon, um corresponderá ao seu login atual e outro pertencente à sessão screen obsoleta (de fato, pode haver vários outros sshd s em execução para vários outros screen s).

    
por 11.11.2014 / 22:13
2

Algumas vezes, as várias telas estão sendo executadas em segundo plano.

Eles podem ser retomados por:

screen -r [pid]

Para obter a tela, primeiro execute screen -R e, em seguida, você verá todos os PIDs da tela em execução, depois disso, continue com screen -r [pid] .

    
por 22.04.2015 / 06:57