题 使用并行运行脚本而无需输入


交件交件交件件件件件件实件实件实件交实实件实似件交交交件交交交交交交交交件实交件件似实实件件件实件件实似件实件件实件实件实件实实件件实实实件实实实实实实实交交实交实实实交实实似件实实实件实件件

如果我只是执行'parallel foo.sh',我得到这个:

parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.

10
2018-06-06 14:28






答案:


假设您要运行十次,此语法将起作用:

parallel -n0 foo.sh ::: {1..10}

parallel 需要一定长度的输入序列(::: {1..10})你需要忽略输入序列的内容(-n0),你只关心它的长度。

你的原始命令: parallel foo.sh,不包含任何输入序列来指示您想要多少并行度。神秘的警告告诉你 parallel 交件似件实件似实交交件件交交似件实件交实实件交交交交件实件实件交实实实实件件交件实件交似件实实实件交件实实实交件实实交实交件实实件实交件实交交实似件实件实件实实似实交实实交件实件实实实件似件件

这是教程示例:

seq 10 | parallel -n0 my_command my_args

这个怎么运作:

  • parallel 总是从某个地方接受输入序列。它可以是以内联空格分隔的序列 ::: 或者来自文件或文件类源(如管道)的换行符分隔序列。在此示例中,输入序列来自管道。
  • seq 10 生成换行符分隔的数字序列,从1到10。
  • -n0 选项告诉parallel忽略输入序列中的值。我们关心的只是序列的长度,而不是它的内容。即使未使用数字,该命令仍将执行十次。

另一个例子:

parallel -n0 echo -n 'x' ::: {1..5}

这个怎么运作:

  • 输入序列是内联的。
  • {1..5} 产生一个空格分隔的数字序列,从1到5。
  • -n0 忽略序列值(我们回显字符串 'x' 每次都改为。)
  • 输出: xxxxx

相比于:

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

这个怎么运作:

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

9
2018-05-29 19:47





您是否阅读了手册中的示例?特别 http://www.gnu.org/software/parallel/man.html#example__run_the_same_command_10_times


1
2018-06-07 11:27