Правильный порядок параллельного выполнения команды shell `time` - PullRequest
1 голос
/ 03 апреля 2019

Мне нужно выполнить приведенную ниже команду (как часть сценария), но я не знаю, в каком порядке располагать объекты, чтобы они выполнялись правильно. Я пытаюсь дать file.smt2 в качестве входных данных для optimathsat , выполнить его, получить время выполнения. Но я хочу сделать это несколько раз параллельно, используя все ядра процессора.

parallel -j+0 time Desktop/optimathsat-1.5.1-macos-64-bit/bin/optimathsat < file.smt2 &>results.csv 

Я добавил #!/bin/bash -x в начале моего файла, чтобы посмотреть, что происходит, и это был вывод:

+ parallel -j+0 time file.smt2
parallel: Warning: Input is read from the terminal. You are either an expert
parallel: Warning: (in which case: YOU ARE AWESOME!) or maybe you forgot.
parallel: Warning: ::: or :::: or -a or to pipe data into parallel.

... из 1-й строки я могу сказать, что заказ неверный. В строках 2,3 и 4 синтаксис отсутствует. Как я могу это исправить?

1 Ответ

0 голосов
/ 05 апреля 2019

Итак, я полагаю, вам не важны результаты, а только время:

seq $(parallel --number-of-threads) |
  parallel -j+0 -N0 --joblog my.log 'Desktop/optimathsat-1.5.1-macos-64-bit/bin/optimathsat < file.smt2'
cat my.log

-N0 вставляет 0 аргументов.

Рассмотрите возможность чтения GNU Parallel 2018 ( напечатано , онлайн ) - как минимум глава 1 + 2.Ваша командная строка поблагодарит вас за это.

...