tee
cat
後でファイルを使用できるように、stdinのコピーをファイルに保存します。
タイミングを記録して再生しながらこれを行うことができるツールはありますか?
だから私は以下が欲しい:
$ (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
私は働く時間を持っていなかったので(エラーがないかもしれず、間違ったPerlがあったかもしれません)、私はpipでインストールできるものを書いています。
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
必要な精度によって異なります。 1秒の精度を達成するために、シェルスクリプトは各行の前に現在のSECONDS値を追加するだけです。再生すると、独自のSECONDSとファイルの次の行の値の間に休止状態になる可能性があります。
精度を上げるには、呼び出しdate
(未知の精度にナノ秒を提供し、各データ行に対して外部プロシージャをトリガーする)またはマイクロ秒を提供するC(C)を使用する必要があります。入力パイプラインの遅延は初期タイムスタンプにわずかに影響します。