传输速率表中显示的单位 pv 可以更改吗?

传输速率表中显示的单位 pv 可以更改吗?

在 中pv,速率计显示为

47.5MiB 0:00:00 [ 165MiB/s] [================================>] 100%

其中用于传输统计信息的单位是MiB(1024 字节)。这个单位可以改成MB(1000字节)吗?

答案1

Linux 的好处在于您可以访问源代码,因此,如果您付出努力,几乎总是可以更改某些内容来执行您希望它执行的操作。

在这种情况下,下载源代码并浏览它们以查看是否有明显的更改内容并不困难。然后重建你自己的pv二进制文件。如果您使用的是rpm基于系统的系统,请尝试以下操作(作为普通用户):

$ yumdownloader --source pv

(即使你有 dnf 而不是 yum,这也应该有效)。您最终应该得到一个后缀为 的文件.src.rpm。名称的其余部分将根据您的版本而有所不同。安装并编译它:

$ rpm -i pv-1.6.0-1.fc22.src.rpm
$ rpmbuild -bc ~/rpmbuild/SPECS/pv.spec

您无需成为 root 即可安装源代码,因为它们已放入~/rpmbuild.但是,您可能需要安装rpmbuild和其他软件包才能进行编译。您应该在以下位置获得正常的最终二进制 pv:

$ file ~/rpmbuild/BUILD/pv-1.6.0/pv

Grep 通过源(例如 MiB)来查找可能的更改。我发现~/rpmbuild/BUILD/pv-1.6.0/src/pv/display.c有一个例程,它pv__si_prefix()采用一个参数is_bytes来确定是除以 1000 还是 1024。我只是编辑了这个例程,通过添加来强制它为 0

is_bytes = 0;

就在声明之后(之前if (is_bytes) {)。然后make按如下方式重新编译二进制文件:

$ cd ~/rpmbuild/BUILD/pv-1.6.0/
$ make

pv文件应该执行您想要的操作。


deb包装系统上,您需要执行类似的步骤:

$ sudo apt-get install dpkg-dev debhelper
$ apt-get source pv
$ cd pv-1.6.0/
$ dpkg-buildpackage -b -nc
  ...  edit src/pv/display.c
$ make

相关内容