I owe RapidElectronic for his excellent comment regarding the new
ddcommand. Beginning with version 8.24, you can specify the parameter,
status=progress, to the
ddcommand. By using this new parameter, you no longer need to send an explicit
USR1signal to the
ddprocess to request an update of the disk copy statistics; it will automatically print periodic updates in the standard output.
$ sudo df if=/dev/sda of=/dev/sdb status=progress
Note that sending the USR1 signal will continue to work for the new
(Original article)dd is a popular, generic command-line tool for copying files from 1 location to another. It is often used to copy entire disk images.
Like many Linux command line tools, it operates silently unless something unexpected happens. Its lack of visual progress feedback is a nice feature for scripting. However, it can leave you wondering about its progress if you are interactively dd-copying a large disk.
To illustrate, you run the following (valid, but perhaps not very useful) dd copy:
$ dd if=/dev/random of=/dev/null bs=1K count=100
It will run for a few minutes as it copies (and immediately discards) 100 blocks of randomly generated data, each of size 1 KB.
To get a progress report while dd is running, you need to open another virtual terminal, and then send a special USR1 signal to the dd process.
First, find out the process id of the dd process by running the following in the new virtual terminal.
$ pgrep -l '^dd$' 8789 dd $
To send the USR1 signal to the dd prcoess:
$ kill -USR1 8789 $
Note that as soon as the USR1 signal is detected, dd will print out the current statistics to its STDERR.
$ dd if=/dev/random of=/dev/null bs=1K count=100 0+14 records in 0+14 records out 204 bytes (204 B) copied, 24.92 seconds, 0.0 kB/s
After reporting the status, dd will resume copying. You can repeat the above kill command any time you want to see the interim statistics. Alternatively, you can use the watch command to execute kill at a set interval.
$ watch -n 10 kill -USR1 8789
Other articles from this blog on the dd command:
Create files of a given size