我最近使用以下命令将驱动器归零:
# 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