Não é possível recuperar a tela desanexada


11

Eu uso massa de vidraceiro e tenho uma conexão sem fio não confiável; portanto, uso a tela para continuar meu trabalho. Frequentemente, eu me desconecto e não consigo reconectar minha tela. Eu vou correr screen -D -RRe ele ficará lá indefinidamente. Tentei ctrl+zrecuperar meu console, seguido por ps aux | grep screene depois kill -9para todos os resultados e, screen -D -RRnovamente, mas obtive os mesmos resultados. Eu tento qualquer combinação de d e r que você queira mencionar, mas ainda fica lá. Minha tela está lá, simplesmente não fará nada, muito menos o resumo.

Alguém tem dicas, truques ou idéias sobre como retomar minha sessão na tela?

Respostas:


15

Eu vi isso quando largo uma conexão em uma tela ativa e reconecto. O bug # 27462 ("Reconectar travamentos quando a sessão original é perdida") descreve o problema como eu o vejo. O que parece acontecer é que a tela está tentando notificar o tty que o detém que está prestes a sair, mas como o tty está suspenso devido a uma queda de conexão, ele precisa aguardar o tempo limite (que é superior a cinco minutos) em alguns casos).

Para consertar, eu faço o seguinte:

  • descobrir qual tty está segurando a sessão da tela ps -ef | grep screen | grep pty
  • encontre o bash de logon associado a esse tty ps -ef | grep bash | grep $PTY
  • matar essa festança kill -KILL $PID

Isso faz com que a tela seja desconectada corretamente e permite que você se reconecte normalmente.

Veja aqui um exemplo de script que automatiza um pouco isso.


ps -ef | tela grep | grep tty nunca imprime nada porque ps -ef | A tela grep nunca retorna nada com a string tty.
Dave Aaron Smith

Na verdade, o script de exemplo parece fazer o truque. Obrigado!
Dave Aaron Smith

1
Sim, eu quis dizer 'pty', não 'tty'.
David Mackintosh

2

Eu tive um problema semelhante com minhas sessões de tela. Eu os nomeio e os tenho configurados como sessões multiusuário. O que descobri foi que estava listando minhas sessões, mas me dizendo que não tinha nenhuma a que me reconectar. Então eu tentei:

screen -x <session_name>

Funcionou como um campeão!


1

Não posso dizer que já tive um problema com a tela não voltar, independentemente do tipo de conexão em que estou. Meu método usual:

ssh myname@foo
screen -S sessionName
(do my work... get disconnected...)

ssh myname@foo
screen -d (just to make sure anything wasn't left attached)
screen -r sessionName

1
Por exemplo, screen-list retorna 32322.mySession (Attached). Então eu tela -d mySession. Então screen -list ainda retorna 32322.mySession (Attached) e screen -r mySession retorna Não há tela a ser retomada correspondente a daveSession.
Dave Aaron Smith

você tentou apenas "tela-d"?
Jason Antman


0

Soulrce: https://kb.iu.edu/data/ahrm.html

To see your existing screen sessions, enter:
  screen -list
This will display a list of your current screen sessions. For instance, if you had one attached screen, you would see:

         1636.pts-21.hostname      (Attached)

To detach an attached screen, enter:
  screen -D
If you have more than one attached screen, you can specify a particular screen to detach. For example, to detach the screen in the above example, you would enter:
  screen -D 1636.pts-21.hostname

0

Se você é inteligente como eu, estava tentando retomar uma sessão na tela iniciada como rootna conta de usuário comum. Descobri isso ls /var/run/screenmostrando-me um diretório pararoot


0

Ocasionalmente, tenho o mesmo problema (tela -r -d não é reiniciada, não responde). Para corrigir, localize o terminal (tty / pty) associado à sessão da tela:

screen -list
There is a screen on:
    28176.pts-51.localhost        (Attached)
1 Socket in /tmp/uscreens/S-xxxx.

Encontre o terminal listado (neste exemplo, pts-51):

ps axuw | grep 'pts/51'   # will vary depending upon how pty's are named
you     12293  0.0  0.2  2148 1128 pts/51   Ss   10:34   0:00 -bash

Mate os processos nesse terminal (geralmente seu shell):

kill 12293

execute ps novamente para garantir que ele se foi. Se não :

kill -9 12293

No meu servidor (gnu / linux), às vezes terei que matar -9 várias vezes até que ele morra.

Depois que todos os processos nesse tty se foram, a tela deve ser retomada corretamente:

screen -r -d

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.