Якщо припустити, що ви хочете запустити десять разів, цей синтаксис буде працювати:
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
створює послідовність цифр від однієї до десяти.
-n0
Опція вказує паралельно ігнорувати значення в послідовності введення. Нас нас хвилює лише довжина послідовності, а не її зміст. Незважаючи на те, що цифри не використовуються, команда все одно буде виконуватися десять разів.
Ще один приклад:
parallel -n0 echo -n 'x' ::: {1..5}
Як це працює:
- Послідовність введення вбудована.
{1..5}
створює послідовно розмежувану пробіл цифр від одного до п'яти.
-n0
ігнорує значення послідовності (і ми повторно повторюємо рядок 'x'
замість цього.)
- Вихід:
xxxxx
Порівняти з:
parallel echo -n ::: {1..5}
Як це працює:
- Послідовність введення вбудована.
{1..5}
створює послідовно розмежувану пробіл цифр від одного до п'яти.
- Кожне значення з послідовності введення використовується як аргумент
echo
. Замовлення не гарантується.
- Вихід:
43215
. Може бути будь-яке замовлення.