Linux怎么查看dd命令当前的实时拷贝进度

小静君_3777

小静君_3777

2026-11-08

322人浏览

原创

status=progress 是最直接的实时监控方法,适用于 coreutils ≥ 8.24 的系统,每秒输出已复制量、耗时和速率;旧系统可用 kill -USR1 PID 或 pv 替代。

linux怎么查看dd命令当前的实时拷贝进度

用 status=progress 最直接(推荐优先试)

现代 GNU coreutils(dd 版本 ≥ 8.24,对应 CentOS 7+/Ubuntu 16.04+)原生支持进度输出,无需额外命令或信号干扰。

只需在命令末尾加上 status=progress:

dd if=/dev/sda of=/backup.img bs=4M status=progress

它会每秒刷新一行类似这样的输出:

2147483648 bytes (2.1 GB, 2.0 GiB) copied, 12.456 s, 172 MB/s

  • 该参数默认启用实时速率和已拷贝字节数,不依赖进程信号,无竞态风险
  • 如果终端被重定向(如加了 > log.txt),进度仍会输出到 stderr,不影响日志捕获
  • 旧系统(如 CentOS 6 或较老的 Debian)不识别该参数,会报错 invalid argument,此时需换方案

向运行中的 dd 发送 SIGUSR1 信号(兼容性最强)

所有主流 Linux 发行版的 dd 都支持接收 SIGUSR1 并打印当前状态,但必须确保 dd 是前台或后台运行中、未被挂起(STOP 状态)。

  • 先查 dd 进程 PID:pgrep -f "dd.*if=" 或 ps aux | grep "dd" | grep -v grep
  • 发送信号:kill -USR1 PID(注意不是 kill -SIGUSR1)
  • 效果:立即在 dd 原始终端打出一行当前进度(同 status=progress 格式)
  • 想自动刷新?用 watch -n 2 kill -USR1 PID,每 2 秒触发一次

⚠️ 常见失败点:用 killall -USR1 dd 可能误杀其他名字含 dd 的进程;pkill -USR1 "^dd$" 更安全,但需确保正则匹配准确。

Linuxdo Application
Linuxdo Application

为 Linux.do 注册撰写高通过率、去 AI 化的中文小作文。进行自适应调查以了解申请人的真实背景,...

下载

用 pv 替代或包裹 dd(适合大文件/管道场景)

当 dd 用于管道(如 dd if=image.iso | gzip > out.gz)或你想获得更丰富的进度条(ETA、瞬时速率曲线),pv 是更可控的选择。

安装后直接替换或插入:

dd if=/dev/sda bs=4M | pv -s $(blockdev --getsize64 /dev/sda) | dd of=/backup.img bs=4M
  • -s 参数告诉 pv 总大小,从而计算 ETA;blockdev --getsize64 获取设备字节总数
  • 若源是普通文件,可用 stat -c "%s" file 替代
  • pv 本身不修改数据,只透传并统计,比反复发信号更稳定
  • 缺点:多一层进程,轻微性能开销(通常可忽略);需要额外安装 pv(apt install pv / yum install pv)

为什么 watch -n 1 pkill -USR1 ^dd$ 有时没反应?

这个常用命令看似简洁,但有几个隐蔽陷阱:

  • pkill 默认匹配整个命令行,^dd$ 只匹配纯 dd 进程(不含参数),实际几乎不存在——应改用 pkill -f "dd.*if="
  • 部分系统(如某些 Alpine 容器)的 pkill 不支持 -f,得退回到 ps | grep | awk | kill 组合
  • 如果 dd 运行在非交互式 shell(如 systemd service、cron)中,SIGUSR1 输出可能被丢弃,看不到进度
  • 多个 dd 并行时,killall dd 会全部触发,干扰判断

真正稳的写法是:先固定 PID,再循环发信号,且始终重定向 stderr 到可见位置。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4450

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3733

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

3033

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7510

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

7142

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

4053

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3545

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3799

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习