使用并行来运行没有input的脚本

我试图运行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} 

怎么运行的:

  • input序列是内联的。
  • {1..5}产生从1到5的空格分隔的数字序列。
  • -n0忽略序列值(我们每次都会回显string'x' )。
  • 输出: xxxxx

相比于:

 parallel echo -n ::: {1..5} 

怎么运行的:

  • input序列是内联的。
  • {1..5}产生从1到5的空格分隔的数字序列。
  • input序列中的每个值都被用作echo的参数。 订单不保证。
  • 输出: 43215 。 可以是任何订单。