我试图运行GNU并行脚本的许多实例,但脚本没有参数。
如果我只是执行“平行foo.sh”我得到这个:
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
假设你想运行十次,这个语法将工作:
parallel -n0 foo.sh ::: {1..10}
parallel
需要一段长度的input序列( ::: {1..10}
),而您需要忽略input序列( -n0
)的内容,您只关心它的长度。
您的原始命令: parallel foo.sh
,不包含input序列以指示您想要的并行度。 神秘的警告是告诉你, parallel
将开始聆听input序列的terminal,这可能不是你想要的。
这里是教程示例:
seq 10 | parallel -n0 my_command my_args
怎么运行的:
parallel
总是从某处获取input序列。 它可以是一个内联的空格分隔的序列,前面是:::
OR来自文件或类似文件的源文件(如pipe道)的换行符分隔的序列。 在这个例子中,input序列来自pipe道。 seq 10
产生一个从一到十的由换行符分隔的数字序列。 -n0
选项通知并行忽略input序列中的值。 我们所关心的只是序列的长度,而不是其内容。 即使数字未被使用,该命令仍将执行十次。 另一个例子:
parallel -n0 echo -n 'x' ::: {1..5}
怎么运行的:
{1..5}
产生从1到5的空格分隔的数字序列。 -n0
忽略序列值(我们每次都会回显string'x'
)。 xxxxx
相比于:
parallel echo -n ::: {1..5}
怎么运行的:
{1..5}
产生从1到5的空格分隔的数字序列。 echo
的参数。 订单不保证。 43215
。 可以是任何订单。