Якщо припустити, що ви хочете запустити десять разів, цей синтаксис буде працювати:
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. Може бути будь-яке замовлення.