Sessões de tela sendo eliminadas, mas os processos ainda continuam ativos e em execução

3

Esta é uma situação estranha em que me deparei. Temos um servidor de teste fora do site (ou fora do site onde eu trabalho). Para acessar o servidor, eu preciso de VPN em sua rede.

Eu corri tela para executar um processo de longa duração. Depois que comecei o processo, fiz o seguinte para verificar a viabilidade da tela:

  1. eu desanexei da sessão
  2. executou a tela -ls para verificar o PID
  3. ps -ef | tela grep
  4. tela -r PID

Eu vi que havia uma sessão de tela depois de executar esses comandos e voltar a anexar / desconectar a sessão.

Aqui está a parte estranha. Eu volto no dia seguinte e não há sessões de tela. Eu corri os cmds acima para checar mas não tem nada. No entanto, meu processo ainda está em execução. Eu não usei nohup para executar o meu processo, mas por algum motivo de sorte, o meu processo não morreu com a sessão.

Alguém sabe o que pode ter acontecido? Por que perdi minha sessão de tela e por que tive sorte e meu processo continuou funcionando?

Obrigado por qualquer esclarecimento. =)

    
por Classified 04.10.2013 / 23:46

2 respostas

4

Você pode querer grep para SCREEN em vez de verificar se sua tela realmente não está em execução.

Alguns sistemas têm limpadores tmp que excluem arquivos em /tmp , /var/tmp , /var/run ou similar. Isso pode resultar em screen não conseguir localizar seus arquivos de soquete. Se você puder identificar o PID de sua sessão, poderá fazer kill -CHLD <PID> para informar screen para reescrever seu arquivo de soquete. screen -r deve então funcionar novamente.

Se isto é o que está acontecendo, você deve configurar o screen para usar outro diretório para seus sockets.

    
por 05.10.2013 / 01:08
0

Isso aconteceu comigo e com meu colega de trabalho novamente recentemente e ele propôs isso como uma possível razão pela qual isso aconteceu. Ele acha que, devido ao tempo da empresa, nossa conexão mata a tela.

Tivemos várias sessões de tela em execução, cada uma com seu próprio trabalho de longa execução (para simplificar, vamos chamar de sessão A e B). O trabalho na sessão A terminou cedo e essa sessão retornou ao prompt. Quando o período de tempo decorrido devido à inatividade, ele nos desconectou da sessão A. A sessão B ainda está executando o seu trabalho quando isso aconteceu, mas achamos que quando o processo pai é interrompido (na tela deste caso), são necessárias todas as sessões. / p>

O processo que estava sendo executado na Sessão B agora é herdado pelo pai da tela, que é o processo de inicialização ou processo 1 e, portanto, continua sendo executado quando verificamos na manhã seguinte.

Essa hipótese foi reforçada pela execução de um experimento. Isso foi executado no Centos. Começamos a tela e abrimos duas sessões. Uma sessão nós periodicamente rodamos um cmd para mantê-lo vivo. O outro nós ignoramos. Depois de 10 minutos, a tela foi terminada e com ela, ambas as sessões que abrimos.

    
por 06.12.2016 / 20:25