|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
9 r4 O: B' N+ O. z" f R) V如何查看dd的拷贝进度
- i; S2 D* H; s9 _! d& b2 f0 D9 d1 m1 q1 l& S( F
linux中的DD命令可以很方便的作二进制拷贝,比如可以做硬盘克隆。: Q v" j3 ^' @( M' Y5 T# W( G% ?) O
一般使用方式如下:; t) ^8 V2 u# ?0 b$ e# O4 A T3 U
/ [: H5 j$ K2 j% Bdd if=/src/device/name of=/dst/device/name
9 y1 t+ O4 W/ w( s+ M4 X/ Q- N6 r
0 s7 Z( o7 n" N- w, e, H... 然后就等它完成,进程退出2 N! Z4 j; M! K( B8 k
) ~ Y: U. m- Q4 e' D
但是当我们需要copy的东西很巨大的时候,这个过程是很痛苦的
: K+ U$ T# q$ _5 Q
3 ]% U! N4 k! x很多人会查看iostat, 来估算大概需要多少时间完成, 这是很不直观的, 也不可靠; M O& k. ]) d+ U2 l" N9 V/ x2 v
; x& ]5 k# } N% y
如果我们dd --help
1 c3 }& Y6 O) X. [8 {1 {9 T' S2 E会看到其实是有方法可以查看copy进度的, 帮助文件中的example如下:
1 y+ N1 v* p9 e" }, N
7 l# z* A0 y2 i1 R) j# J$ dd if=/dev/zero of=/dev/null& pid=$! 后台运行dd测试,保存进程号到pid中: Q) c! C0 U, O6 R! u9 C W) f0 s
/ m6 g5 d" q0 N% V& k
实际我们使用的时候可以新开一个终端,
- q/ P6 ^8 u/ v: T2 a2 F/ k: j# T1 J$ F I& u
ps -ef | grep dd
! a9 ?% u7 ?6 x. f1 }0 T( Y2 I: p B7 K! q, b
找到dd的PID, 然后发送USR1(用户自定义信号),查看copy进度! A& D. T9 I( v9 O% Q# C
+ [. U& w/ E$ ^/ U2 d1 D( p有些场合我们可能使用当前这个终端, 那么我们可以把当前运行的dd转到后台:ctrl+z, 这时候dd进程被stop了,使用bg %1让其在后台继续运行,并且编为1号,后面如果要它到前台运行,只要键入fg %1就可以了.
( t+ U7 ]4 G8 @
9 e8 t7 O6 Y2 V' [然后我们输入kill -USR1 PID, 这里的PID是前面用ps查看到的进程号+ L' K1 J2 }/ p- h- J/ y; e( t# T
这时候你就能看到当前的copy信息了,以及平均copy速度" o3 N8 k0 h: N) K6 O8 h8 r+ c3 i
* h6 C5 o) z5 |- \
# p9 n5 ?! i% h5 {可以结合watch -n 1 kill -USR1 PID实时刷新copy进度。
- \( A3 j, b: w- U* }' G% h& Y. e
. i* c. k' r; {% q |
|