Suponiendo que desea ejecutar diez veces, esta sintaxis funcionará:
parallel -n0 foo.sh ::: {1..10}
parallel
necesita una secuencia de entrada de cierta longitud ( ::: {1..10}
) Y necesita ignorar el contenido de la secuencia de entrada ( -n0
), solo le importa su longitud.
Su comando original: parallel foo.sh
no contiene ninguna secuencia de entrada para indicar cuánto paralelismo desea. La advertencia críptica le dice que parallel
comenzará a escuchar la terminal para una secuencia de entrada, y que esto probablemente no sea lo que desea.
Aquí está el ejemplo del tutorial:
seq 10 | parallel -n0 my_command my_args
Cómo funciona:
parallel
siempre toma una secuencia de entrada de alguna parte. Puede ser una secuencia delimitada por espacios en línea precedida por :::
O una secuencia delimitada por una nueva línea de un archivo o una fuente similar a un archivo, como una tubería. En este ejemplo, la secuencia de entrada es de una tubería.
seq 10
produce una secuencia de dígitos delimitada por una nueva línea del uno al diez.
- La
-n0
opción le dice a paralelo que ignore los valores en la secuencia de entrada. Lo único que nos importa es la longitud de la secuencia, no su contenido. Aunque los dígitos no se usan, el comando se ejecutará diez veces.
Otro ejemplo:
parallel -n0 echo -n 'x' ::: {1..5}
Cómo funciona:
- La secuencia de entrada está en línea.
{1..5}
produce una secuencia de dígitos delimitada por espacios de uno a cinco.
-n0
ignora los valores de secuencia (y hacemos eco de la cadena 'x'
cada vez).
- Salida:
xxxxx
Comparar con:
parallel echo -n ::: {1..5}
Cómo funciona:
- La secuencia de entrada está en línea.
{1..5}
produce una secuencia de dígitos delimitada por espacios de uno a cinco.
- Cada valor de la secuencia de entrada se usa como argumento para
echo
. Pedido no garantizado.
- Salida:
43215
. Podría ser cualquier orden.