GNU Parallel: 并行执行Linux命令

今天在Stack Overflow上看到一个很有趣的问题,
问题的大意是:

需要用一个脚本处理一个文本文件, 但这个文本文件可能很大, 由于处理脚本的问题, 希望每次能够只处理该文本文件的若干行, 就像 xargs 一样, 而且不能使用split来分割文件, 也不允许生成临时文件.

如果允许使用临时文件的话, 那么用bash script并不难实现, 若不能使用临时文件, 那么可以使用GNU Parallel工具来实现. 实现的方法如下:

cat giantfile.txt | parallel -j 8 --pipe -L 50000 import_script

-j 8 : 表示并行jobs的数量, 不想并行执行可以设置为 1. 也可以不加 -j 选项, 则默认为每个CPU核运行一个job.

--pipe: 表示从stdin 读取一块数据, 并将每块数据分给各个jobs

-L N: 一次最多读取N行数据

这里有一篇 parallel 的教程: http://www.gnu.org/software/parallel/parallel_tutorial.html

这是翻译版本: http://my.oschina.net/enyo/blog/271612

这里介绍了一些 parallel 与其他 Linux 命令一起使用的例子: http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/

时间: 2024-10-26 12:22:21

GNU Parallel: 并行执行Linux命令的相关文章

利用多核CPU来加速Linux命令 — awk、sed、bzip2、grep、wc

你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作--一些无法并行的操作.数据专家们,我是在对你们说.你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核.借用卡通人物Cartman的话,"如何我能使用这些内核"?要想让Linux命令使用所有的CPU内核,我们需要用到GNU Parallel命令,它让我们所有的CPU内核在单机内做神奇的map-reduce操作

使用cpu加速linux命令方法步骤详解 

我们都知道linux系统中 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核.那么如何才能使用这些内核? 要想让Linux命令使用所有的CPU内核,我们需要用到GNU Parallel命令,它让我们所有的CPU内核在单机内做神奇的map-reduce操作,当然,这还要借助很少用到的–pipes 参数(也叫做–spreadstdin).这样,你的负载就会平均分配到各CPU上,真的. BZIP2 bzip2是比gzip更好的压缩工具,但它很慢!别折腾了,我

最有用的Linux命令行使用技巧集锦

最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在几位回答者的日常工作中都很有用.对于任何不了解的命令,请使用"man <COMMANDNAME>"查看,或者使用Google.有些命令需要先用 yum, apt-get install 命令安装. 1.基本命令 了解基本的bash 通读整个bash man page. 学习VI

转摘--如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等

http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/ 你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作.数据专家们,我是在对你们说.你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核. 借用卡通人物Cartman的话,“如何我能使用这些内核”? 要想让Lin

[Android ] linux命令英文缩写的含义(方便记忆)

du -sh */ reference to : http://blog.chinaunix.net/uid-27164517-id-3299073.html linux常用命令的英文单词缩写 命令缩写:ls:list(列出目录内容)cd:Change Directory(改变目录)su:switch user 切换用户rpm:redhat package manager 红帽子打包管理器pwd:print work directory 打印当前目录 显示出当前工作目录的绝对路径ps: proc

20个 Unix/Linux 命令技巧

让我们用这些Unix/Linux命令技巧开启新的一年,提高在终端下的生产力.我已经找了很久了,现在就与你们分享. 删除一个大文件我在生产服务器上有一个很大的200GB的日志文件需要删除.我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入: > /path/to/file.log # 或使用如下格式 : > /path/to/file.log # 然后删除它 rm /path/to/file.log 如何记录终端输出?试试使用script命令行工具来为你的终端

man命令--Linux命令应用大词典729个命令解读

内容来源于人民邮电出版社<Linux命令应用大词典> 讲述729个命令,1935个例子 学习Linux系统的参考书.案头书,遇到不懂的命令或命令选项一查即可 争取每天都发布内容 本文出自 "airfish2000" 博客,更多命令查看博客: http://airfish2000.blog.51cto.com/10829608/1881635 man命令 使用man命令可以格式化并显示在线的手册页.man会列出一份完整的说明,其内容包括命令语法.各选项的意义以及相关命令等.

《Linux命令应用大词典》一书,讲述729个命令,1935个例子

<Linux命令应用大词典>涵盖了Linux系统常用的命令,内容涉及基础入门.系统管理.网络管理.网络安全.服务器配置和程序编译等多方面,共计729个命令,1935个例子,内容非常全面.每一个命令都讲述了它的功能描述.命令语法.选项含义和命令实例,内容清晰明了,正所谓一书在手,万事不愁. <Linux命令应用大词典>可以作为读者学习Linux系统的参考书.案头书,遇到不懂的命令或命令选项一查即可:适合Linux爱好者.Linux系统管理工程师.培训机构教师和学生以及高等院校计算机专

用python执行Linux命令

例1:在python中包装ls命令 #!/usr/bin/env python#python wapper for the ls commandimport subprocesssubprocess.call(["ls","-l"]) 在Linux中执行该命令 [[email protected] python]# python ls.pytotal 8-rwxrwxrwx 1 root root 415 Mar 18 11:40 a.py-rw-r--r-- 1