`pv` 如何知道目标磁盘的大小?

`pv` 如何知道目标磁盘的大小?

我最近使用以下命令将驱动器归零:

# pv /dev/zero > /dev/sdd

根据查看吞吐量和剩余时间pv,它从操作开始就正确估计/计算/知道磁盘的大小 - 120GB。

pv我的问题是,当它的输出被这样重定向时,如何知道这一点?

答案1

man 1 pv

请注意,如果无法计算输入大小,并且输出是块设备,则将使用块设备的大小,并且pv将自动停止在该大小,就像-S已给定一样。

这个“好像-S”是为了避免“设备上没有剩余空间”并成功退出。


如果你想知道它是如何pv知道其标准输出的大小的,那么答案是:

情况并非如此,pv将流传输到某个 fifo,然后 shell 读取 fifo 并写入/dev/sdd。 实际情况是,shell从一开始就让pv的文件描述符 1 指向,因此进程可以检测到它是一个块设备,查询其大小等。/dev/sdd

相关内容