Man*_*uel 7 queue parallel-processing bash
使用bash和常用工具为Linux构建最小任务队列系统的最佳/最简单方法是什么?
我有一个9'000行的文件,每行有一个bash命令行,命令是完全独立的.
command 1 > Logs/1.log
command 2 > Logs/2.log
command 3 > Logs/3.log
...
Run Code Online (Sandbox Code Playgroud)
我的盒子有多个核心,我想同时执行X任务.我在网上搜索了一个很好的方法来做到这一点.显然,很多人都有这个问题,但到目前为止还没有人有一个好的解决方案.
如果解决方案具有以下功能,那将是很好的:
command; command)ls > /tmp/ls.txt)如果它适用于其他Unix克隆而没有太多异国情调的要求,则可获得奖励积分.
GNU Parallel http://www.gnu.org/software/parallel/是一种比PPSS更加通用的并行化工具.
如果runfile包含:
command 1 > Logs/1.log
command 2 > Logs/2.log
command 3 > Logs/3.log
Run Code Online (Sandbox Code Playgroud)
你可以做:
cat runfile | parallel -j+0
Run Code Online (Sandbox Code Playgroud)
每个CPU核心运行一个命令.
如果您的命令如上所述,您甚至不需要运行文件,但可以执行以下操作:
seq 1 3 | parallel -j+0 'command {} > Logs/{}.log'
Run Code Online (Sandbox Code Playgroud)
如果有更多计算机可用于处理,您可能需要查看GNU Parallel的--sshlogin和--trc选项.