新的方法:
dd if=<src> of=<dest> status=progress
-------------------------------------------------------------------------------------------------------------
旧的方法:
使用 dd 时,通常我们想看copy 的数据,和copy 的速度,
需要等待dd 结束后,才能看到.
而我们这里,提出一种方法,以每秒的方法去查看 dd 的copy数据和copy速度
需要两个终端,一个终端下使用 dd 命令 copy 数据;另一个终端 使用 kill 命令
如下:
终端一:
# dd if=/dev/zero of=/dev/null bs=4096 count=$((20*1024*1024)) &
之后会输出 这个后台进程的进程号:
[1] 4262
4262 就是 dd 执行的进程号
在终端二下:
# kill -10 4262
使用 -10 向 dd 发送一个信号,这个信号,会被 dd 命令捕捉到,从而打印出 dd 的信息,如下:
终端一中的输出:
8095039+0 records out
33157279744 bytes (33 GB) copied, 2.88624 s, 11.5 GB/s
由此,我们根据 kill 每秒向 dd 发送 -10 的信号,我们的脚本如下:
#!/bin/sh
pid=$1
while ps -ef | awk '{print $2}' | grep -q $pid
do
if [ $? -eq 0 ]; then
kill -10 $pid
else
echo "No such pid - $pid"
exit 1
fi
sleep 1
done
echo "Done"
于是,我们在终端二中使用这个脚本,就可以在终端一中,每秒显示出 dd 信息了,
使用方法:
# bash kill.sh 4262
Over.
谢谢大家!