在 CentOS 系统中,dd
命令是一个功能强大但操作需极为谨慎的底层工具,常用于磁盘克隆、备份、创建启动盘以及性能测试等场景,由于其执行过程通常没有默认的进度显示,监控其读写速度对于评估任务耗时和系统性能至关重要,本文将详细介绍几种在 CentOS 中查看 dd
命令执行速度的有效方法。
使用 status=progress
选项(推荐方法)
对于较新版本的 dd
工具(在 CentOS 7 及更高版本中通常可用),最直接、最便捷的方法是使用 status=progress
参数,它能让 dd
在运行时实时显示已复制的数据量、耗时以及当前速度。
使用方法:
在标准的 dd
命令末尾添加 status=progress
即可。
示例:
假设我们要创建一个 1GB 大小的零填充文件,并查看其写入速度。
dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 status=progress
执行后,终端会实时显示类似如下的信息:
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.5 s, 307 MB/s
在命令执行过程中,它会持续更新,
536870912 bytes (537 MB) copied, 1.8 s, 298 MB/s
这清晰地表明了当前已写入 537MB,耗时 1.8 秒,实时速度为 298 MB/s,这是最符合现代用户习惯的方式。
使用 pv
命令(管道监视器)
pv
(Pipe Viewer)是一个专门用于监视数据通过管道进度的小工具,它功能强大,不仅能显示速度,还能提供进度条、剩余时间估算和吞吐率。
如果系统中尚未安装 pv
,可以通过 yum
或 dnf
进行安装。
# For CentOS 7 sudo yum install pv # For CentOS 8/Stream sudo dnf install pv
使用方法:pv
可以无缝地集成到 dd
的管道操作中,基本思路是将输入文件通过 pv
传递给 dd
。
示例:
同样以创建 1GB 零填充文件为例。
pv /dev/zero | dd of=/tmp/testfile bs=1M count=1024
执行后,你会看到一个动态的进度条和详细的统计信息:
00GiB 0:00:03 [ 298MiB/s] [===========================>] 100%
pv
的输出非常直观,包含了已传输数据、耗时、实时速度和进度条,非常适合长时间运行的任务。
使用 kill -USR1
信号(传统方法)
在 dd
版本较旧或无法使用 status=progress
的情况下,可以通过向 dd
进程发送 USR1
信号来强制其打印当前状态,这是一种传统的“手动”查看方式。
使用步骤:
:在命令末尾加上 &
,使其在后台执行,并记下进程 ID(PID)。dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 & [1] 12345 # 12345 dd 命令的 PID
发送信号:使用
kill
命令发送USR1
信号给该 PID。kill -USR1 12345
或者,如果这是你最近启动的后台任务,可以使用 来引用其 PID:
kill -USR1 $!
查看状态:
dd
进程接收到信号后,会在终端输出当前的 I/O 统计信息,但不会终止运行。512+0 records in 512+0 records out 536870912 bytes (537 MB) copied, 1.81258 s, 296 MB/s
你可以重复执行
kill -USR1
命令来获取最新的进度。
方法对比
方法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
status=progress | 内置功能,无需安装,实时显示 | 旧版 dd 不支持 | 现代 CentOS 系统(7+),首选方法 |
pv | 信息丰富(进度条、ETA),可集成到任何管道 | 需要额外安装 | 需要详细进度信息或管道监控的场景 |
kill -USR1 | 兼容性极好,几乎所有 dd 都支持 | 手动操作,非实时,略显繁琐 | 旧系统或无法使用前两种方法的应急情况 |
相关问答 (FAQs)
为什么我的 dd
速度很慢,如何优化?
解答: dd
的速度受多种因素影响,源和目标存储介质的物理速度是决定性因素(HDD 远慢于 SSD,USB 2.0 远慢于 USB 3.0),块大小参数 bs
对性能影响巨大,过小的 bs
(如默认的 512 字节)会导致大量的 I/O 请求,降低效率,设置较大的 bs
(如 bs=4M
或 bs=1M
)能显著提升速度,系统的 I/O 负载、文件系统类型等也会产生影响,优化时,可以尝试调整 bs
值,并在系统负载较低时执行任务。
dd
命令中的 if
和 of
具体指什么,使用时有什么风险?
解答: if
是 “input file” 的缩写,指定数据源,它可以是普通文件(如 image.iso
),也可以是设备文件(如 /dev/sda
)。of
是 “output file” 的缩写,指定数据写入的目标。最大的风险在于 of
参数。of
指向一个硬盘设备(如 /dev/sdb
),dd
会毫无提示地覆盖该设备上的所有数据,导致数据永久丢失,在使用 dd
操作磁盘时,务必反复确认 if
和 of
的参数是否正确,特别是 of
的目标设备,一个字母的差错都可能是灾难性的。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复