Використовуючи паралельне виконання сценарію без введення


10

Я намагаюся запустити багато екземплярів сценарію з GNU паралельно, але сценарій не бере аргументів.

Якщо я просто виконую "паралельний foo.sh", я отримую це:

parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.

Відповіді:


10

Якщо припустити, що ви хочете запустити десять разів, цей синтаксис буде працювати:

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. Може бути будь-яке замовлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.