Tempo limite de um script com stdin

1

Eu preciso de algo assim:

timeout -k 4 cat file | myscript.sh

mas recebo este erro:

timeout: invalid time interval ‘cat’
Try 'timeout --help' for more information.

Eu quero passar o stdin para o myscript.sh e matá-lo após o 4s da execução.

    
por Federico Ponzi 23.09.2014 / 14:56

1 resposta

1

Ao ler a saída de timeout --help (como sugerido pela saída da sua pergunta), descobri que você não está usando os argumentos apropriados para o comando timeout .

O formato do comando é: timeout [OPTION] DURATION COMMAND [ARG]...

E a opção -k também aceita um argumento DURATION . Portanto, ao usar -k , deve haver dois DURATION argumentos.

Portanto, um formato adequado poderia ser: timeout -k 6 4 cat file | myscript.sh

Não vai mudar muito embora. cat não bloqueia o sinal TERM , portanto, não é necessário enviar um sinal KILL . E mesmo se você matar cat , isso não é garantia de que o script termine. Significa apenas que o script receberá EOF , caso tente ler mais de stdin .

Provavelmente, é melhor colocar um tempo limite no script em vez do comando cat .

    
por 23.09.2014 / 16:38

Tags