Coreutils Progress Viewer(cv),以前称为cv(Coreutils Viewer):是一个简单的程序,它可以用于显示任何核心组件命令(如:cp、mv、dd、tar、gzip、gunzip、cat、grep、fgrep、egrep、cut、sort、xz、exiting)的进度。它使用文件描述信息来确定一个命令的进度,比如cp命令。cv之美在于,它能够和其它Linux命令一起使用,比如你所知道的watch以及I/O重定向命令。
实验环境
Centos7.7 Minimal
Progress工具的github地址:https://github.com/Xfennec/progress
安装
Progress工具依赖ncurses库,先安装ncurses-devel然后再编译安装progress
[root@localhost ~]<span style="color: #57a64a;font-style: italic;line-height: 26px"># yum -y install ncurses-devel</span>
[root@localhost ~]<span style="color: #57a64a;font-style: italic;line-height: 26px"># git clone https://github.com/Xfennec/progress</span>
[root@localhost ~]<span style="color: #57a64a;font-style: italic;line-height: 26px"># cd progress/</span>
[root@localhost progress]<span style="color: #57a64a;font-style: italic;line-height: 26px"># make && make install</span>
运行progress
如果没有命令在运行,那么progress程序将退出并告诉你,没有命令正在运行。
使用cp命令复制一个文件,当拷贝一个大文件的时候可以看到进度。
[root@localhost ~]<span style="color: #57a64a;font-style: italic;line-height: 26px"># cp -p CentOS-7-x86_64-Minimal-1908.iso /tmp/</span>
<span style="color: #57a64a;font-style: italic;line-height: 26px"># 再打开一个终端,输入progress查看任务进度</span>
[root@localhost ~]<span style="color: #57a64a;font-style: italic;line-height: 26px"># progress -wq</span>
如果需要知道移动或者复制大文件的剩余时间,可以添加-w选项,隐藏全部消息可以使用-q。
progress和watch命令一起使用
Watch配合progress命令使用,可以实时显示文件传输的进度:
[root@localhost ~]<span style="color: #57a64a;font-style: italic;line-height: 26px"># cp -p CentOS-7-x86_64-Minimal-1908.iso /tmp/</span>
<span style="color: #57a64a;font-style: italic;line-height: 26px"># 再打开一个终端,输入progress查看任务进度</span>
[root@localhost ~]<span style="color: #57a64a;font-style: italic;line-height: 26px"># watch progress -wq</span>
总结
progress只需扫描/proc以查找感兴趣的命令,然后查看目录fd和fdinfo以查找打开的文件和查找位置,并报告最大文件的状态。