如何在bash中使用'tail'和'timeout'

如何在bash中使用'tail'和'timeout',bash,Bash,我试图输出脚本的最后几行,但也在5秒后将其切断。我可以很容易地输出前几个 timeout 5 ./code-c|head 4 (11 - 7) 0.000003s 6 (19 - 13) 0.000018s 8 (37 - 29) 0.000020s 14 (73 - 59) 0.000022s 24 (137 - 113) 0.000024s 30 (227 - 197) 0.000031s 32 (433 - 401) 0.000038s 48 (557 - 509) 0.000044s

我试图输出脚本的最后几行,但也在5秒后将其切断。我可以很容易地输出前几个

timeout 5 ./code-c|head

4 (11 - 7) 0.000003s
6 (19 - 13) 0.000018s
8 (37 - 29) 0.000020s
14 (73 - 59) 0.000022s
24 (137 - 113) 0.000024s
30 (227 - 197) 0.000031s
32 (433 - 401) 0.000038s
48 (557 - 509) 0.000044s
50 (769 - 719) 0.000051s
54 (1283 - 1229) 0.000065s
但是如果我尝试

timeout 5 ./code-c|tail
我只是

Terminated

正确的方法是什么?

问题是,当代码c以非零退出状态终止时,管道关闭。添加一个成功的命令来阻止它

(timeout 5 ./code-c || true ) | tail


可能不是“正确”的方式,但您可以在超时5时使用循环
。/code-c;do:;完成| tail
@123确实有效!谢谢。那太聪明了!谢谢。@eleanora:实际上是一个只返回true而不执行其他操作的命令。我还发现了命令
timed run
<代码>定时运行5./code-c | tail工作正常。
(timeout 5 ./code-c || : ) | tail