首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将dd状态/结果消息写入文件?

如何将dd状态/结果消息写入文件?
EN

Unix & Linux用户
提问于 2018-01-30 14:37:23
回答 2查看 4.2K关注 0票数 3

我使用这个dd命令检查磁盘速度:

代码语言:javascript
复制
dd if=/dev/zero of=/path/file bs=1G count=1 oflag=direct

它还给出了这样的东西:

代码语言:javascript
复制
1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 8,52315 s, 126 MB/s

现在我想将这个输出管道,不是dd正在写入的文件,而是一个单独的文件。

我试着添加

代码语言:javascript
复制
>> /tmp/foo

代码语言:javascript
复制
| sudo tee /tmp/foo

dd命令,但这只会创建一个空文件。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-01-30 14:58:03

为了能够在另一个命令之前或之后在管道中插入dd,它的信息性消息被写入标准错误而不是标准输出。

的OpenBSD手册dd显式地提到了这一点(但是Ubuntu手册似乎忽略了这个事实,但在更完整的info页面中提到了):

完成后,dd将完整和部分输入和输出块的数量和截断的输入记录显示到标准错误输出。

若要从命令重定向标准错误,请使用2>filename。若要将标准错误流附加到已存在的文件而不截断该文件,请使用2>>filename

例如:

代码语言:javascript
复制
dd if=/dev/zero of=/path/file bs=1G count=1 oflag=direct 2>dd.txt

请注意,在第一个示例(使用>>)中附加的输出与第二个示例中的截断输出(使用tee)混合使用。若要使用tee追加文件,请使用tee -a

票数 4
EN

Unix & Linux用户

发布于 2018-01-30 14:52:09

dd输出实际上是打印到stderr而不是stdout

可以将stderr重定向到dd命令的文件,如下所示:

$ dd if=/dev/zero of=/path/file bs=1G count=1 oflag=direct 2>> /path/to/file

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/420692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档