Io

如何以固定速度讀取行數?

  • June 1, 2017

我需要讀取一個大的日誌文件並使用(netbsd)netcat 在同一主機工作站上的兩個虛擬機之間通過本地網路發送它。

我知道 netcat 有一個間隔,但據我所知,您可以使用的最小間隔是 1 行/秒。

我需要以這種方式發送的大多數文件都有數十萬行,有些接近一百萬行,因此每秒一行是不可行的。

如果我只使用 cat,我的主機/工作站最終會陷入無法使用的地步。

使用 bash 和常見的 *nix 工具,有沒有一種方法可以發送文件,但以 5-10 行/秒或類似的速度將其提供給 netcat?

這樣做的最終目標是允許我對我正在考慮的集中式日誌數據庫進行一些概念驗證測試。

pv,它以NetBSD 包的形式提供,可讓您限制管道的速率。

<large_file pv -L 1k | netcat …

事實證明,pv這裡是完美的工具(至少 pv 1.6.0)。使用-l(線模式)標誌,-L限制變成線。

簡單證明:

seq 0 1000|pv -l -L100 > /dev/null
1k 0:00:10 [99.6 /s] [           <=>                  

seq 0 10000|pv -l -L1k > /dev/null
10k 0:00:09 [1.03k/s] [          <=>

引用自:https://unix.stackexchange.com/questions/38944