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

前端之家收集整理的这篇文章主要介绍了linux – 使用并行运行脚本而无需输入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用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.可以是任何订单.

猜你在找的Linux相关文章