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常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...