How to show linux "cmp" command progress?

4

3

Is there a way to show the progress when running the cmp command?

Comparing large files or partitions using cmp can take a while.

I have searched google and used man cmp, but failed to find any useful information.

With the 'dd' command for example executing

kill -USR1 [pid_of_dd]

makes dd output its status in the console.

Is there a way to make cmp do something similar?

Iljaas

Posted 2011-11-23T11:21:28.630

Reputation: 145

Answers

11

You can use PipeViewer for this

pv firstfile | cmp -l secondfile > output

Alex

Posted 2011-11-23T11:21:28.630

Reputation: 1 067

Thanks! Your answer is really useful for other commandline stuff as well. – Iljaas – 2011-11-24T08:34:57.953

8

$ cmp -l firstfile secondfile &
[1] pid_of_cmp
$ ls -l /proc/pid_of_cmp/fd/
lrwx------ 1 user group 64 datetime 0 -> /dev/console
lrwx------ 1 user group 64 datetime 1 -> /dev/console
lrwx------ 1 user group 64 datetime 2 -> /dev/console
lr-x------ 1 user group 64 datetime 3 -> /path/to/firstfile
lr-x------ 1 user group 64 datetime 4 -> /path/to/secondfile
$ cat /proc/pid_of_cmp/fdinfo/0
pos:    25952256
flags:  0100000
$ cat /proc/pid_of_cmp/fdinfo/1
pos:    122650624
flags:  0100000

Compare pos to the size of the files.

ephemient

Posted 2011-11-23T11:21:28.630

Reputation: 20 750

This option is very useful in some cases: you don't have the pv or bar commands; you don't have control over the command (for example a GUI program launches it); or the command doesn't support pipes. – golimar – 2013-02-28T17:59:56.853