用stdin超时一个脚本

我需要这样的东西:

timeout -k 4 cat file | myscript.sh 

但我得到这个错误:

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

我想将标准input传递给myscript.sh,并在执行4s后终止。

在读取timeout --help的输出(如你的问题的输出所示)时,我发现你没有使用timeout命令的正确参数。

命令的格式是: timeout [OPTION] DURATION COMMAND [ARG]...

-k选项也需要一个DURATION参数。 所以当使用-k ,必须有两个 DURATION参数。

所以一个适当的格式可以是: timeout -k 6 4 cat file | myscript.sh timeout -k 6 4 cat file | myscript.sh

虽然不会有太大变化 cat不会阻止TERM信号,所以发送KILL信号是没有必要的。 即使你杀了cat ,那也不能保证脚本终止。 这只是意味着脚本将获得EOF ,以防它尝试从stdin读取更多内容。

你可能最好把脚本超时,而不是cat命令。