Назад | Перейти на главную страницу

Тайм-аут скрипта со стандартным вводом

Мне нужно что-то вроде этого:

timeout -k 4 cat file | myscript.sh

но я получаю эту ошибку:

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

Я хочу передать stdin в myscript.sh и убить его после 4 секунд выполнения.

После прочтения вывода timeout --help (как следует из результатов вашего вопроса), я обнаружил, что вы не используете правильные аргументы для timeout команда.

Формат команды: timeout [OPTION] DURATION COMMAND [ARG]...

И -k вариант также принимает DURATION аргумент. Так что при использовании -k,должно быть два DURATION аргументы.

Итак, правильный формат может быть таким: timeout -k 6 4 cat file | myscript.sh

Но это не сильно изменится. cat не блокирует TERM сигнал, поэтому отправив KILL сигнал не нужен. И даже если ты убьешь cat, это не гарантирует, что сценарий завершится. Это просто означает, что сценарий получит EOFна случай, если он попытается прочитать что-нибудь из stdin.

Вам, вероятно, лучше поставить тайм-аут в скрипте вместо cat команда.