Se timeout
expirar, sai com status 124 ; você pode verificar isso para determinar se o script expirou ou não.
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 ...
Se timeout
expirar, sai com status 124 ; você pode verificar isso para determinar se o script expirou ou não.
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
.
Tags bash timeout linux shell-script