Why read -t
在 RHEL5 或 RHEL6 上从管道读取时不会超时?
这是我的示例,在从管道读取数据时,我的 RHEL 盒子不会超时:
tail -f logfile.log | grep 'something' | read -t 3 variable
如果我是对的read -t 3
3秒后应该超时吗?
提前谢谢了。
Chris
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
切普纳给出的解决方案应该有效。
为什么您的版本不这样做的解释很简单:当您构建像您这样的管道时,数据从左到右流经管道。当你的read
然而,超时后,左侧的程序将继续运行,直到它们注意到管道已损坏,并且只有当它们尝试写入管道时才会发生这种情况。
一个简单的例子是这样的:
cat | sleep 5
五秒钟后管道将破裂,因为sleep
将会退出,但是cat
尽管如此,它将继续运行,直到您按回车键。
在您的情况下,这意味着,在 grep 产生结果之前,您的命令将继续运行,尽管超时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)