回放管道的工具,包括计时

回放管道的工具,包括计时

tee将 stdin 的副本存储在文件中,以便稍后可以使用cat该文件。

有没有一种工具可以做到这一点,同时还可以记录和回放计时?

所以我想要:

$ (echo foo; sleep 1; echo bar) |
    the-tee-tool --out myfile > /dev/null
$ time the-tee-tool --in myfile | cat
foo
bar
real    0m1.002s
user    0m0.002s
sys     0m0.000s

我知道你如何制作这样一个工具,但是它已经存在了吗?

答案1

现在是这样:https://gitlab.com/ole.tange/tangetools/-/tree/master/teetime

Usage:

... | teetime [-a] file | ...
teetime -i file

-a  append to file
-i  read from file

答案2

我无法让 teetime 工作(没有错误,也许我有错误的 perl),所以我写了一个可以用 pip 安装的。

管式VCR

pip3 install --user pipevcr

您可以使用 录制管道-r,例如:

(echo start; sleep 1; echo continue; sleep 1; echo end) | pipevcr -r test.vcr

并播放它:

pipevcr test.vcr

如果你想加快速度,你可以设置暂停的最大等待时间:

pipevcr -m 300 test.vcr

答案3

取决于所需的精度。为了达到一秒的精度,shell 脚本可以只在每一行前面加上当前的 SECONDS 值。重播时,它可以休眠自己的 SECONDS 和文件下一行中的值之间的时间段。

更高的精度需要调用date(这给未知的精度提供纳秒,并为每行数据引发一个外部过程)或使用 C(提供微秒)。输入管道中的延迟会稍微影响初始时间戳。

相关内容