小伙伴們都清楚,dd 命令默認(rèn)是不顯示執(zhí)行進(jìn)度的,執(zhí)行以后就是等著,等著,等到發(fā)慌,等到心里發(fā)堵。實(shí)際上,我們可以使用命令或者狀態(tài)使其顯示進(jìn)度,以下介紹幾種方法。使用的系統(tǒng)版本為:
$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
注: 執(zhí)行 dd 命令時(shí)需要使用 root 權(quán)限。
dd 接收 USR1 信號(hào)
# 啟動(dòng) dd 進(jìn)程并將 dd 進(jìn)程的 PID($!)保存到 shell 變量 PID
$ if=/dev/sda1 of=/dev/zero bs=4096 & PID=$!
# 每隔 2 秒向 dd 進(jìn)程發(fā)送一個(gè) USR1 信號(hào),要求 dd 進(jìn)程輸出拷貝進(jìn)度
$ while kill -USR1 $PID; do sleep 2; done
使用 status 選項(xiàng)
# GUN 的 dd 版本必須大于 8.24
$ dd --version
dd (coreutils) 8.25
Copyright (C) 2016 Free Software Foundation, Inc.
$ dd if=/dev/sda1 of=/dev/zero bs=4096 status=progress
2870411264 bytes (2.9 GB, 2.7 GiB) copied, 20 s, 144 MB/s
使用 pv 命令
$ pv -tpreb /dev/sda1 | dd of=/dev/zero
1.02GiB 0:00:08 [ 108MiB/s] [====> .............. ] 0% ETA 0:20:11
在 Mac OS X 中安裝 gun coreutils 就可以使用 status 選項(xiàng),或使用 pv 命令顯示進(jìn)度。