linux - tee 是否转发尚未进入文件的数据?

标签 linux bash tee

我正在像这样对新硬盘进行归零:

pv /dev/zero | tee /dev/sdb | sha1sum -

我的想法是,我将磁盘置零并同时计算写入了多少个零的校​​验和。然后我将对 block 设备进行 sha1sum,看看它是否与我最初写入的数据匹配。

问题是,当“tee”用完设备上的空间并终止时会发生什么?假设 block 设备恰好是 100 万字节; tee 显然会用 100 万个零字节填充它,但它会正好 100 万个零字节转发到 sha1sum 吗?

最佳答案

原问题的答案:

不,tee 不会在对参数中指定的文件的写入失败时停止写入 stdout

但我认为这并不重要。看来您的目标是确保整个磁盘都被零覆盖,而不用担心磁盘有多大。因此,读取磁盘并将读取的每个 block 与零 block 进行比较就足够了。您可以使用 cmp/dev/sdb/dev/zero 来做到这一点。如果它说“EOF on/dev/sdb”,那么所有字节都是 0。

关于linux - tee 是否转发尚未进入文件的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26349479/

相关文章:

c - 附加到进程后,如何检查tracee是否在系统调用中?

scala - "tee"Scala 流/迭代器

bash - 在 bash 脚本中使用 if 语句检查包是否已安装时遇到问题

linux - 如何使用 inittab 文件执行 Linux shell 脚本

linux - 将多个文件合并到一个 tar 文件中

PowerShell 1 不使用 tee 捕获批处理文件输出

python - 如何将 sys.stdout 复制到日志文件?

c - C 中的 MapReduce 分区问题

linux - 在 Unix 中启动和停止 SAS Server 9.2

c++ - 使用 OpenCV、Boost 线程和多个摄像头