We're an ISO27001:2013 Certified Supplier


The venerable dd command has been a staple of Unix systems since the 5th Edition, released in 1974. It reads blocks from an input file and outputs them to a destination, so although it has rather unusual options compared to modern conventions, it’s still extremely useful for duplicating or transforming disk images.

However, one function which was missing from dd for a long time is a progress indicator. There are two ways to make up for this deficiency depending if you have a modern version of dd or you are stuck with an older operating system.

First, let’s recap a couple of common usage patterns for dd itself.

Basic dd operation

dd‘s most basic function is to take an input file (remember, in Unix almost everything is a file) and stream its contents to another file. That can be in one operation thus:

dd if=/dev/zero of=/dev/null

That operation can also be broken into a pipeline of two dd commands, which gives us the opportunity to insert other processing into the pipeline:

dd if=/dev/zero | dd of=/dev/null

pv to the rescue

Pipeviewer, or pv, is another small utility which takes standard input and passes it on through standard output, but here’s the magic: it can output a progress bar along the way. If the size of the file is known in advance then the progress bar is accurate; if not, it simply slides from side to side to indicate activity (and provides other information such as transfer rate).

A generic progress bar can be inserted into a dd pipeline directly:

dd if=/dev/zero | pv | dd of=/dev/null

Or, when the input is a normal file, pv can read it directly and then the progress bar is accurate:

pv my-disk-image.img | dd of=/dev/null

dd‘s own progress

Newer versions of dd have a progress bar built in; it’s a simple extra switch to enable this:

dd if=/dev/zero of=/dev/null status=progress


Photo by SioraPhotography on Unsplash

1 thought on “`dd` progress”

  1. I think that kill responds to USR1 signal too.
    e.g. ps ax | grep dd will give the PID of the dd process

    and then in another terminal
    kill -USR1 PID_OF_DD
    will show progress of the dd process (or at least how many bytes transferred out of the total)

Leave a Reply

Your email address will not be published.

Secure. Reliable. Scalable.

If that doesn't describe your current Linux systems, check out our FREE Linux Survival Guide to help you get your systems up to scratch today!
  • This field is for validation purposes and should be left unchanged.