Tempo limite do Linux se não houver saída

1

No meu script, quero executar um comando que se conecta a um servidor remoto e pode levar muito tempo devido a uma conexão de rede incorreta. Então eu quero que o tempo limite e seja morto depois de 60 segundos. No entanto, há casos em que ele apenas começa a trabalhar no 59º segundo e é morto em breve com saída truncada (tarefa inacabada).

Estou usando o tempo limite do GNU, que aceita apenas um valor de tempo e mata o processo depois que o tempo passa. O que estou esperando é uma ferramenta que expira e mata um processo apenas se:

  1. Esse tempo passa
  2. NÃO há saída desse processo.

Alguma sugestão?

    
por Xiao Jia 21.11.2013 / 03:16

1 resposta

0

Parece-me que você pode querer abordar o problema de forma diferente. Supondo que você esteja se conectando ao servidor remoto via SSH, você deve considerar o lançamento do processo de forma que a conexão SSH possa ser interrompida normalmente e o processo continue a ser executado. No final, seria algo como:

nohup script.sh > /dev/null 2>&1 &

Isso usa o comando nohup para executar script.sh de uma maneira que é imune a travamentos, redirecionando STDIN / STDOUT para o escaninho de descarte (/ dev / null) e, em seguida, fazendo o processo em segundo plano. Isso deve liberar o TTY usado para a conexão inicial e permitir que o processo continue a ser executado em segundo plano mesmo depois que a sessão (e TTY) estiver fechada.

    
por 21.11.2013 / 03:32