使用gnu parallel运行bash脚本

时间:2015-09-17 18:59:06

标签: bash parallel-processing gnu-parallel

我的脚本使用data.table逐行处理一些文件。

当我这样做时:

while read

我的结果很好。

但是尝试使用gnu head -n5 file1 | ./myscript.sh 来并行化它:

parallel

head -n5 file1 | parallel -j 4 ./myscript.sh 个文件空了!?

我也尝试过:

result

但仍然无效。我试图做与他们所说的相似的事情 文档,但没有任何成功。 我做错了什么?

修改

也许这会有所帮助:

parallel -j 4 -a file1 ./myscript.sh

2 个答案:

答案 0 :(得分:4)

parallel不会将输入行发送到给定命令的stdin,但会将该行附加到您给出的命令。

如果您按照自己的意愿撰写,那么您就可以有效地拨打./myscript.sh <INPUT>,呼叫./myscript.sh,并将输入发送为stdin

这应该有效:

head -n5 file1 | parallel -j 4 "echo {} | ./myscript.sh"

{}parallel表示您希望输入的位置,而不是最后的默认值。

答案 1 :(得分:4)

- 为您制作管道:

cat file1 | parallel --pipe -N5 ./myscript.sh

但您需要更改myscript.sh,以便它不会保存到result,而是将输出打印到stdout。然后你可以:

cat file1 | parallel --pipe -N5 ./myscript.sh > result

并避免任何混合。