Monitoring the progress of dd

Josh Sherman
1 min read
Command-line Interface

Whether you’re zeroing out an old disk drive or creating a USB flash drive with your favorite Linux distro, dd is there to take care of business.

One of the shortcomings of using dd back in the day was the lack of transparency into what it was actually doing and where it was at in the process. This compounded interest when you factored in how slow drives used to be.

Fortunately, back in 2015 when GNU coreutils 8.24 came out, dd was expanded to have a status argument that you could use the set the level of information you’d like to be printed to stderr.

To show a bit of status information periodically, you can slap status=progress to the end of your command:

dd if=/path/to/some.iso of=/dev/drive status=progress

Not much to it!

Sadly though, if you’re like me, you probably forget to include this on the regular. You could CTRL+c the command and start it over, or you could leverage the kill command to give you some information about the command like so:

kill -USR1 $(pgrep ^dd$)

Great for a one time status, but what if you want a periodic update akin to the native dd argument? Combine this with the watch command to spit out the status every few seconds:

watch -n 5 'kill -USR1 $(pgrep ^dd$)'

Adjust the number passed into -n to set the number of seconds you’d like the command to run and you’re off to the races without having to restart the process!

Join the Conversation

Good stuff? Want more?

Weekly emails about technology, development, and sometimes sauerkraut.

100% Fresh, Grade A Content, Never Spam.

About Josh

Husband. Father. Pug dad. Musician. Founder of Holiday API, Head of Engineering and Emoji Specialist at Mailshake, and author of the best damn Lorem Ipsum Library for PHP.

Currently Reading

Parasie Eve

Previous Reads

Buy Me a Coffee Become a Sponsor

Related Articles