parallel利用多核CPU来加速命令 2017-04-14 • Lu Tao # 对一个大文件中的列进行求和 cat rands20M.txt | parallel --pipe -q awk '{s+=$1} END {print s}' | awk '{s+=$1} END {print s}' # block默认1M,可以指定 cat rands20M.txt | parallel --block 2M --pipe -q awk '{s+=$1} END {print s}' # bzip2不指定文件时,压缩或者解压都是从标准输入到标准输出 cat bigfile.bin | parallel --pipe --recend '' -k bzip2 --best > compressed.bz2 # 统计每个ip出现的次数,每行一个 zcat < file.gz | parallel --pipe -q awk '{ sum[$1] += 1; } END { for (i in sum) { print i, sum[i]; }}' | awk '{ sum[$1] += $2; } END { for (i in sum) { print i, sum[i]; }}' | sort -k1 > stats.txt zcat < file.gz | awk '{print $1}' | sort -k 1 | uniq -c | awk '{print $2, $1}' > stats.txt 相关参数 -k #保持顺序 -q #quote后续命令,省略掉很多需要用反斜杠转义的地方 --pipe #将来自管道的输入传递给命令 --recend #技术结束标记 非常有必要通读一遍man parallel_tutorial的内容,而我确实也已经这么做了,耗时2个小时左右,很有价值。 源码安装 # 通过源代码安装 http://git.savannah.gnu.org/cgit/parallel.git/tree/README wget http://ftpmirror.gnu.org/parallel/parallel-20170322.tar.bz2 bzip2 -dc parallel-20170322.tar.bz2 | tar xvf - cd parallel-20170322 ./configure && make && sudo make install # 安装完成之后,如果使用报错 parallel: Error: --tollef has been retired. parallel: Error: Remove --tollef or use --gnu to override --tollef. # 检查/etc/parallel/config文件,是不是有个--tollef选项,删掉即可。 参考链接 GNU Parallel Tutorial