我正在寻找一个shell命令X,例如,当我执行时:
command_a | X 5000 | command_b
Run Code Online (Sandbox Code Playgroud)
所述stdout
的command_a
被写入stdin
的command_b
(至少)5-秒钟后.
一种延迟缓冲.
据我所知,buffer
/ mbuffer
可以以恒定速率写入(每秒固定的字节数).相反,我想要一个恒定的时间延迟(t = 0是X
读取command_a
输出块时,在t = 5000时必须将此块写入command_b
).
[编辑]我已经实现了它:https://github.com/rom1v/delay
我知道你说你正在寻找一个shell命令,但是如何使用子shell来获得优势呢?就像是:
command_a | (sleep 5; command_b)
Run Code Online (Sandbox Code Playgroud)
所以对于grep
文件来说cat
(我知道,我知道,使用不好cat
,但只是一个例子):
cat filename | (sleep 5; grep pattern)
Run Code Online (Sandbox Code Playgroud)
一个更完整的例子:
$ cat testfile
The
quick
brown
fox
$ cat testfile | (sleep 5; grep brown)
# A 5-second sleep occurs here
brown
Run Code Online (Sandbox Code Playgroud)
或者,正如Michale Kropat所建议的那样,群组命令sleep
也会起作用(并且可以说更正确).像这样:
$ cat testfile | { sleep 5; grep brown; }
Run Code Online (Sandbox Code Playgroud)
注意:不要忘记命令后面的分号(这里是grep brown
),因为它是必要的!
因为似乎这样的命令不存在,所以我用 C 实现了它:https: //github.com/rom1v/delay
delay [-b <dtbufsize>] <delay>
Run Code Online (Sandbox Code Playgroud)