Valor de retorno da função Timeout

5

Estou usando a função de tempo limite no debian para aguardar 5 segundos pelo meu script. Funciona muito bem, mas o problema que tenho é que eu preciso de um valor de retorno. Gostar 1 para tempo limite e 0 para nenhum tempo limite Como vou fazer isso?

Veja meu código:

timeout 5 /some/local/script/connect_script -x 'status' > output.txt
# here i need the return of timeout

Como você vê meu connect_script -x 'status' retorna o status como uma string e imprime na tela (provavelmente você não pode ver isso) O contexto desse problema é que, se o servidor (para connect_script) estiver congelado, o script não fará nada. É por isso que preciso do tempo limite em torno disso. E quando o tempo limite eu quero reiniciar o servidor. Eu posso fazer isso, mas não tenho ideia de como posso ver se o tempo limite é ou não ...

    
por Zero 22.05.2015 / 16:35

2 respostas

10

Se timeout expirar, sai com status 124 ; você pode verificar isso para determinar se o script expirou ou não.

    
por 22.05.2015 / 16:48
4

De acordo com o manual ( man timeout ):

Synopsis timeout [OPTION] NUMBER[SUFFIX] COMMAND [ARG]...

[...] If the command times out, then exit with status 124. Otherwise, exit with the status of COMMAND

Combine isso com o conhecimento de que o status de saída ou o valor de retorno está armazenado na variável $? e temos ...

timeout 5 /some/local/script/connect_script -x 'status' > output.txt
RETVAL=$?

Em seguida, você pode processar mais com base no valor de $RETVAL , que será 124 se exceder o tempo limite, ou algum outro valor com base no status de saída de connect_script .

    
por 22.05.2015 / 16:50