2013-11-13 7 views
1

У меня есть программа, которая принимает один аргумент. Я использую gnu параллельно для выполнения параметров sweeps по этому аргументу. Каждый запуск генерирует один результат, и я хочу добавить все результаты в один файл, например, Results.txt.File I/O in gnu parallel

Что будет правильно Способ для этого?

Мне не нужно, чтобы каждый экземпляр открывал файл и записывал его, так как это могло создавать конфликты, а также нарушать порядок результатов. Единственный способ, которым я могу это сделать, - это каждый запуск генерировать свой вывод в файле с уникальным именем, а затем, когда gnu parallel завершает работу, объедините результаты в один файл с помощью скрипта.

  1. Есть ли более простой способ достичь этого?
  2. Что происходит, когда несколько экземпляров записывают в/чтение из одного файла? Параллельно ли gnu создает несколько копий, по одному для каждого экземпляра, как для stdout и stderror?

благодаря

ответ

5

Если ваша команда посылает результат на стандартный вывод (стандарт Outout) решение тривиально:

seq 1000 | parallel echo > Results.txt 

GNU Parallel гарантирует выход не будет смешиваться.