linux 多路cpu支持,在Linux命令中使用多个CPU核心

cat bigfile.bin | bzip2 --best > compressedfile.bz2

而改为

cat bigfile.bin | parallel --pipe --recend '' -k bzip2 --best > compressedfile.bz2

特别对于bzip2命令,

GNU Parallel在多核CPU上显著地快于单核。你一不留神,它就执行完成了。

GREP

如果你有一个超大的文本文件需要被检索,那么就不应该这样使用:

grep pattern bigfile.txt

而是

cat bigfile.txt | parallel --pipe grep 'pattern'

抑或是

cat bigfile.txt | parallel --block 10M --pipe grep 'pattern'

第二条命令使用了--block 10M参数,通过这个参数可以表示你希望每个CPU核心处理多少行数据。

AWK

这里有一个如何使用awk来计算一个非常大的文件的例子,原来我们使用:

cat rands20M.txt | awk '{s+=$1} END {print s}'

而现在:

cat rands20M.txt | parallel --pipe awk \'{s+=\$1} END {print s}\' | awk '{s+=$1} END {print s}'

这里面用到了更多的东西。在parallel中的-pipe参数将cat的输出分成多个块传递给awk,形成许多子操作计算,这些子计算结果通过第二个管道传给同一个的awk,然后给出最终结果。第一个awk有三个反斜线,这是为了GNU Parallel调用awk的需要。

WC

想要使用超级并行来计算一个文件的行数吗?那么就不要再这样使用了:

wc -l bigfile.txt

而是:

cat bigfile.txt | parallel --pipe wc -l | awk '{s+=$1} END {print s}'

这是一种相当巧妙的方法:我们先映射出大量的wc -l的调用,生成子运算,

然后通过第二个管道传给awk,

把它们加起来。

SED

想要使用sed在一个极大的文件中做大量替换么?那么就不应该这样使用:

sed s^old^new^g bigfile.txt

而是

cat bigfile.txt | parallel --pipe sed s^old^new^g

... ... 然后可以使用pipe把输出存储到指定的文件中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值