Мне нужно что-то вроде этого:
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
команда.