Bash 带pv进度条的多芯gzip

Bash 带pv进度条的多芯gzip,bash,gzip,xargs,pv,Bash,Gzip,Xargs,Pv,在这个2010年的问题之后,我想使用多核gzip文件,并用pv工具指示一个进度条 如何改进此代码 CORES=$(grep -c '^processor' /proc/cpuinfo) find /source -type f -print0 | xargs -0 -n 1 -P $CORES gzip -9 我想显示剩余时间,并显示并行运行的进度条 截至2018年,您还有其他最佳选择吗 谢谢。您不是真的在多核上运行gzip,而是在运行多个gzip pv在管道上运行。我认为不可能让它同时在多个

在这个2010年的问题之后,我想使用多核
gzip
文件,并用
pv
工具指示一个进度条

如何改进此代码

CORES=$(grep -c '^processor' /proc/cpuinfo)
find /source -type f -print0 | xargs -0 -n 1 -P $CORES gzip -9
我想显示剩余时间,并显示并行运行的进度条

截至2018年,您还有其他最佳选择吗


谢谢。

您不是真的在多核上运行gzip,而是在运行多个gzip


pv
在管道上运行。我认为不可能让它同时在多个管道上运行并提供所有管道的摘要。

您不是在多个内核上运行gzip,而是在运行多个gzip


pv
在管道上运行。我认为不可能让它同时在多个管道上运行并提供所有管道的摘要。

使用带有进度条或
eta的GNU Parallel

find ... -print0 | parallel -0 --progress gzip -9 {}


使用带有进度条或eta的GNU Parallel:

find ... -print0 | parallel -0 --progress gzip -9 {}


使用参数
-c
-N
选中GNU parallel->可以并行运行多个pipeview。在任何情况下,您都不能使用所有内核运行
gzip
。您正在运行多个
gzip
,每个核心一个。要在多个内核中运行gzip算法,请使用
pigz
。使用参数
-c
-N
检查GNU parallel->您可以有多个pipeview并行运行。在任何情况下,您都不能使用所有内核运行
gzip
。您正在运行多个
gzip
,每个核心一个。要在多个内核中运行gzip算法,请使用
pigz
。我使用
htop
和CPU条跟踪进度,但它不提供视觉反馈
pv
我使用
htop
和CPU条跟踪进度,但它不提供视觉反馈
pv
offers这也是我首选的解决方案。提示:如果您使用的所有内核都是CPU密集型的,比如
gzip-9
,那么您可能希望
nice
。您可以在
gzip
之前或在
parallel
之前插入一个
nice-n10
,所有子PID都继承parallel的niceness。或者,您可以使用比使用
parallel-j$($(nproc)-1))
的内核少一个线程来并行运行,从而牺牲一点吞吐量。我只是更喜欢
nice
ing方法,这样就可以充分利用空闲资源,但当正常任务需要CPU时间时,就会让步。这也是我首选的解决方案。提示:如果您使用的所有内核都是CPU密集型的,比如
gzip-9
,那么您可能希望
nice
。您可以在
gzip
之前或在
parallel
之前插入一个
nice-n10
,所有子PID都继承parallel的niceness。或者,您可以使用比使用
parallel-j$($(nproc)-1))
的内核少一个线程来并行运行,从而牺牲一点吞吐量。我只是更喜欢
nice
ing方法,因此您可以充分利用空闲资源,但在正常任务需要CPU时间时会让步。
find ... -print0 | parallel -0 --bar ...