bra*_*ito 5 parallel-processing bash gnu-parallel
我有我的脚本while read用于逐行处理一些文件..
当我做:
head -n5 file1 | ./myscript.sh
我的结果很好.
但尝试使用gnu并行化它parallel:
head -n5 file1 | parallel -j 4 ./myscript.sh
产生result文件空!?
我也尝试过:
parallel -j 4 -a file1 ./myscript.sh
但仍然无法正常工作.我试图做类似于他们在文档中所说的内容,但没有任何成功.我究竟做错了什么?
编辑:
也许这可以帮助:
head -n5 file1 | parallel -a - -j 4 echo #this works
head -n5 file1 | parallel -a - -j 4 ./myscript #this doesn't
parallel不会将输入行发送stdin给给它的命令,而是将该行附加到您给定的命令。
如果你像你一样写它,那么你实际上是在调用./myscript.sh <INPUT>,你想要调用的地方./myscript.sh,并将输入发送为stdin。
这应该有效:
head -n5 file1 | parallel -j 4 "echo {} | ./myscript.sh"
该{}指示parallel您要输入去,而不是在最后的默认。
--pipe 是为您量身定做的:
cat file1 | parallel --pipe -N5 ./myscript.sh
但是您需要进行更改,myscript.sh以便它不会保存到result而是将输出打印到标准输出。然后你可以:
cat file1 | parallel --pipe -N5 ./myscript.sh > result
并避免任何混合。
| 归档时间: | 
 | 
| 查看次数: | 4181 次 | 
| 最近记录: |