|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
2 o+ l Q+ D% u% U- U; B2 {8 l
如何查看dd的拷贝进度) i7 \6 A# [0 D' u3 ^
h/ A0 K' A9 x! K+ blinux中的DD命令可以很方便的作二进制拷贝,比如可以做硬盘克隆。
3 Y {& t0 o( R6 i一般使用方式如下:
+ j) g/ T7 y* D5 [/ q( C9 k1 |
' ]( r$ }, G* q( }% W! ]; Add if=/src/device/name of=/dst/device/name( V, T# X( Q0 x3 _; Q+ D
1 f# S6 g, o$ C6 {
... 然后就等它完成,进程退出; [. u' V: W6 ~( j! t
. \$ i. |9 k- _4 X4 @8 ?0 v但是当我们需要copy的东西很巨大的时候,这个过程是很痛苦的7 x! \% f: L, Y1 D( k. S
- N7 E- S* i) f. E. c7 X0 [6 \
很多人会查看iostat, 来估算大概需要多少时间完成, 这是很不直观的, 也不可靠
' M- I) |6 X3 [# B2 g" ]0 d4 I2 Y
' }9 F/ ^( g" `( ]- W" ^如果我们dd --help
+ R" H ?: j; i O会看到其实是有方法可以查看copy进度的, 帮助文件中的example如下: O4 \5 X- ]3 A1 \% w
- b' g# r9 p* B$ B3 t1 N
$ dd if=/dev/zero of=/dev/null& pid=$! 后台运行dd测试,保存进程号到pid中( h3 c) D1 ^& H/ j( \
5 Y, f# x' Z/ T* d
实际我们使用的时候可以新开一个终端,4 ^9 j1 z5 s* d
1 y2 {6 m, I) I
ps -ef | grep dd4 p7 y8 N. M8 U+ B" J R v+ U
2 v5 b F E* `" M2 ~' q* C
找到dd的PID, 然后发送USR1(用户自定义信号),查看copy进度% q9 f: {& _3 y# J' m$ b/ c
! F* w7 M. C2 c6 ]3 j3 g
有些场合我们可能使用当前这个终端, 那么我们可以把当前运行的dd转到后台:ctrl+z, 这时候dd进程被stop了,使用bg %1让其在后台继续运行,并且编为1号,后面如果要它到前台运行,只要键入fg %1就可以了.* J, L* @8 Z# A3 m$ f% n
$ W3 a% X, V3 P9 n5 ?7 a
然后我们输入kill -USR1 PID, 这里的PID是前面用ps查看到的进程号0 P7 ~& }; Q& B, f9 p/ l
这时候你就能看到当前的copy信息了,以及平均copy速度
5 K3 |$ Y' x. B5 ]0 X" Y7 K0 Q8 F+ `
! |$ s- N# o! e; `
$ _! I# E$ D/ j5 m可以结合watch -n 1 kill -USR1 PID实时刷新copy进度。, j8 n* u0 s& c( m0 }; U
+ R2 k3 F2 i3 m" r( v* @
|
|