Viewing Progress of Commands Using Pipe Viewer Tool in Linux
Pipe Viewer (pv) is the CLI tool that allows users to track the progress of the process and display them on the terminal by giving information such as total data transferred, the time elapsed, completed percentage, etc. To visualize the process progress it can be used normally via pipe operator b/w processes.
Why do we require it?
Some processes have inbuilt functionality or via parameterized to show the progress of the process, but some processes don’t have this, so we externally pass this from the Pipe Viewer tool and track the progress.
Pipe Viewer (pv): a CLI tool to track the progress of the process.
Options for the Pipe Viewer tool:
-s, –size <size>: Assume the total amount of data to be transferred is SIZE. You can provide the size in bytes or using units (b, kb, mb, gb, tb).
-N, –name <name>: Prefix the output information with NAME.
Installation Process: It uses the npm (node package manager) and to install this run the following command.
$ npm install -g pv
Here providing some examples to better understanding and to learn the use of this tool.
Example 1: Display a dd copy progression: here we can see the progression of the copying file using dd command.
$ dd if=code_1.46.1-1592428892_amd64.deb | pv | dd of=gfg/code_2
Explanation: here in this screenshot we can see the file which contains by current directory, and we will copy the code_1.46.1-1592428892_amd64.deb file in gfg/ directory with the name of code .
Example 2: A cat command progression: we can use the pv to visualize the progress of the content seeing using cat command. Here we will see the content of the sample.txt file.
$ cat gfg/sample.txt | pv
Example 3: Display the progression while compressing: To better ensuring we can see the live compression( track compression) using pipe viewer.
$ tar -cf - gfg/* | pv | tar -C . -x
Here it above screenshots show all file content in the specified directory
Explanation: This command is compressing all files which are in gfg/ directory where all flag like -c, -x, etc has a meaning as specified below.
Flags that used in command
- -c: Creates archive
- -x : Extracts the archive
Example 4: Visualize a live ssh network: using ssh we can connect the host and can see the live connection speed. Here for simplicity, we will direct transfer data to /dev/null
$ yes | pv | ssh kira@localhost "cat > /dev/null"
Explanation: command can be break in following part to understand
- yes → it gives the permission to connect with the server and can save fingerprint
- pv → for pipe viewer
- ssh kira@localhost → connecting with localhost server
- “cat > /dev/null” → command processing for track progress