É possível em um script dizer se está sendo executado na tela GNU?

10

Temos um longo processo em execução em um servidor remoto que é iniciado manualmente de tempos em tempos. Infelizmente, as conexões com a Internet morrem, o pânico dos kernels e uma série de outros desafios podem ser encontrados pela sessão ssh usada para conectar e iniciar o trabalho.

A tela parece ser uma maneira perfeita de garantir que o processo não seja interrompido. No entanto, confiar em uma pessoa para sempre lembrar de iniciar a tela e depois executar o script para iniciar o processo é um problema que está prestes a acontecer. Existe uma maneira do script eu posso verificar se o script está sendo chamado de dentro da tela? Se for o processo continuará, caso contrário, o script sairá com uma mensagem instruindo o usuário a executar a tela primeiro.

    
por cclark 03.10.2012 / 07:42

2 respostas

11

Existe uma variável de ambiente para isso. Se estiver sendo executado na tela, $TERM será screen . É simples assim; basta fazer um se sobre ele. Por exemplo,

if [ $TERM != 'screen' ]; then echo foo; else echo bar; fi

ecoará a barra quando na tela; foo de outra forma.

    
por 03.10.2012 / 07:44
7

Enquanto você está trabalhando com a tela, por que não executar o script com 'nohup'? Isso também garantirá que continue sendo executado se você for desconectado.

Ele é enviado para um arquivo por padrão, então você pode usar outras ferramentas para monitorar a saída do script, se desejar.

    
por 03.10.2012 / 07:45

Tags