Eu estava usando o irssi na tela, mas perdi a conexão. Depois de voltar ao servidor, não consigo mais me conectar a essa tela. screen -ls mostra que a tela já está anexada.
Tentei a tela -D para forçá-lo a desanexá-lo, e ele dizia desanexar, mas a tela -ls ainda diz que está anexado. Eu tentei a tela -x e só fica lá.
[sub@server ~]$ screen -ls
There are screens on:
4033.poe (Detached)
7728.irssi (Attached)
2 Sockets in /var/run/screen/S-sub.
O que eu posso fazer agora?
fonte
Você deu um nome não padrão. Tente o seguinte:
screen -RD irssi
fonte
podes tentar:
é sempre uma boa ideia usar o nome completo
pid.tty
fonte
screen
é conhecido por não ser compatível com versões anteriores entre versões. Se a versão doscreen
foi atualizada no servidor, pode ser possível que você não consiga anexar mais as sessões de tela mais antigas.Nesse caso, você pode usar o binário SCREEN antigo para reconectá-lo (desde que o gerente do pacote de distribuição o tenha salvado em algum lugar) ou matar a sessão completamente.
fonte
Eu tive algum sucesso enviando ao processo GNU / screen um SIGCHLD (que normalmente recebe quando uma janela é fechada), o que o força a tocar (e possivelmente recriar) o arquivo de soquete.
Observe também que existem duas maneiras de chamar o
screen
executável que diferem apenas no caso:SCREEN
é o componente do lado do servidor ao qual você está tentando se reconectar, enquantoscreen
o lado do cliente que embaralha os dados entre o terminal e o lado do servidor. Então, você pode tentar matar a versão em minúscula ...Por exemplo, a seguir, você pode ver que meus processos
screen
eSCREEN
não são considerados pai e filho, indicando que eu me vinculei a uma sessão existente.Sessões novas são mais ou menos assim:
fonte
kill
comando assim:kill -s SIGCHLD <PID>
onde<PID>
é o número do ID do processo (coluna mais à esquerda no meu exemplo de saída)Isso aconteceu comigo enquanto eu estava usando o vi, onde a sessão congelou e eu desconectei. Ao tentar reconectar à tela usando a tela -Arx, o processo seria interrompido.
Pode haver um processo filho semelhante em execução, causando a interrupção da tela. Se você se lembrar de um foco em particular, caso contrário, para obter uma lista do processo filho em execução na tela, faça:
O que mostrará os processos filho aninhados:
Depois de finalizar o processo vi que causou o problema, consegui reconectar a tela sem nenhum problema. Matar todos os processos anteriores que foram reconectados à tela também é provavelmente uma boa idéia. Apenas use:
Não sei o que a tela está fazendo internamente, por que o vi causou a interrupção da tela ou por que matar o processo do vi trouxe minha tela de volta. Eu já tive esse problema com a tela no passado e tentei o que a maioria das pessoas recomendava neste tópico sem sorte. Encontrar esse processo filho problemático é a única coisa que funcionou para mim e funcionou consistentemente nisso.
fonte
fonte
Funcionou para mim. Eu tinha três telas diferentes e perdi três conexões ssh diferentes. Depois de reconectar, as telas ainda estavam conectadas, eu emiti o comando acima ... é claro que perdi minha conexão atual, mas era nova. Na próxima reconexão, todas as telas foram desconectadas.
Observe que, se você é um superusuário, deve usar a
--user
opção para matar apenas seus daemons ssh.fonte