Estou usando a função timeout no debian para esperar 5 segundos pelo meu script. Funciona muito bem, mas o problema que tenho é que preciso de um valor de retorno. Como 1 por tempo limite e 0 por tempo limite Como vou fazer isso?
Dê uma olhada no 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 problema é que, se o servidor (para connect_script) estiver congelado, o script não fará nada. . É por isso que eu preciso do tempo limite para isso. E quando chega o tempo limite, quero reiniciar o servidor. Eu posso fazer isso, mas não tenho idéia de como posso ver se o tempo limite está ou não ...
fonte
De acordo com o manual (
man timeout
):Combine isso com o conhecimento de que o status de saída ou o valor de retorno está armazenado na variável,,
$?
e temos ...Em seguida, você pode fazer mais processamento com base no valor de
$RETVAL
, que será 124 se atingir o tempo limite ou em algum outro valor com base no status de saída deconnect_script
.fonte
O valor de retorno
timeout
depende do sinal que você usa para finalizar o filho.SIGTERM
retorna 124:Mas
SIGKILL
retorna 137:Veja a página do manual:
fonte