如果我想在长时间运行的操作上显示一个小的进度指示器,我可以使用管道查看器:
ssh pc2 cat some.file | pv -nC reading | gzip --fast | pv zipping > some.file.gz
这给了我一个有趣的小显示,告诉我事情进展的速度:
reading: 470MiB 0:00:18 [26.7MiB/s] [ <=> ]
zipping: 99.6MiB 0:00:18 [5.61MiB/s] [ <=> ]
但是当我同时做一堆事情时,输出就变得一团糟:
cat file.list | xargs -P 4 --replace={} sh -c "ssh pc2 cat {} | pv -nC r.{} | ..."
有什么方法可以让它工作吗?
man pv
说有一种方法可以将的输出循环传输pv
到名为的实用程序中dialog
,但我对此不熟悉
答案1
您可以在新终端或对话框中执行每个程序实例。对于终端
cat file.list | xargs -P 4 --replace={} gnome-terminal -x sh -c "ssh pc2 cat {} | pv -nC r.{} | ..."
在对话框中查看 zenity
cat file.list | xargs -P 4 --replace={} sh -c "ssh pc2 cat {} | pv -nC r.{} | zenity --text-info | ..."
答案2
如果您已安装 GNU Parallel:
cat file.list | parallel --tmux -P 4 'ssh pc2 cat {} | pv -nC r.{} | ...'
这将启动 中的作业tmux
。然后您可以附加到tmux
:
tmux attach
如果您的系统没有安装 GNU Parallel,则需要 10 秒才能安装完成:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
了解更多信息:观看简介视频以获得快速介绍: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
浏览教程 (man parallel_tutorial)。命令行会让您爱上它。