我正在尝试使用GNU parallel运行许多脚本实例,但脚本不带参数.
如果我只是执行’parallel 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需要一个长度的输入序列(::: {1..10})并且你需要忽略输入序列的内容(-n0),你只关心它的长度.
您的原始命令:parallel foo.sh,不包含任何输入序列,以指示您想要多少并行度.隐秘的警告告诉你并行将开始收听终端输入序列,这可能不是你想要的.
这是教程示例:
seq 10 | parallel -n0 my_command my_args
这个怎么运作:
> parallel始终从某处获取输入序列.它可以是一个内联空格分隔的序列,前面带有::: OR来自文件或文件类源(如管道)的换行符分隔序列.在此示例中,输入序列来自管道.
> 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.可以是任何订单.