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
.