почему этот параллельный процесс не записывает вывод в файлы, а вместо этого печатает на консоли?

Отказ от ответственности: Это более общий вопрос о том, что я спросил на biostars.org о параллельности и записи в файл.

Когда я запускаю программу ( obisplit из пакета obitools ) последовательно, она считывает один файл и создает несколько файлов на основе некоторого критерия (не важного здесь) в исходном файле:

 input_file.fastq |____ output_01.fastq |____ output_02.fastq |____ output_03.fastq 

Однако, когда я разбиваю входной файл и запускаю его параллельно (версия из ubuntu repo: 20141022),

 find . * | grep -P "^input_file" | parallel -j+3 obisplit -p output_{/.}_ -t variable_to_split_on {/} 

Я ожидал получить файлы

 input_file_a.fastq |____ output_input_file_a_01.fastq |____ output_input_file_a_02.fastq |____ output_input_file_a_03.fastq input_file_b.fastq |____ output_input_file_b_01.fastq |____ output_input_file_b_02.fastq |____ output_input_file_b_03.fastq input_file_c.fastq |____ output_input_file_c_01.fastq |____ output_input_file_c_02.fastq |____ output_input_file_c_03.fastq 

но вывод выводится только на консоль.

Есть ли что-то, что связано с parallel которое вызывает эту печать для консоли или может быть так, как obisplit ведет себя по какой-либо причине? Есть ли способ убедить каждое ядро, созданное parallel с печатью, в конкретный файл вместо консоли?

  • как обойти тупик (многопоточность программы)
  • GNU Parallel и sshpass с списком серверов в цикле
  • Как параллельно запускать несколько экземпляров программы параллельно?
  • обрабатывать файлы в каталоге по мере их появления
  • Запуск GNU Parallel в фоновом режиме?
  • Скопировать несколько файлов в один каталог с параллельным
  • xargs, записи и стандартный ввод
  • GNU parallel vs & (я имею в виду фон) vs xargs -P
  • One Solution collect form web for “почему этот параллельный процесс не записывает вывод в файлы, а вместо этого печатает на консоли?”

    Звучит так, как будто obisplit ведет себя по-другому, если выход перенаправляется.

    Вы можете запросить GNU Parallel для вывода в файлы:

     seq 10 | parallel --results output_{} echo this is input {} >/dev/null 

    (или если ваша версия старше:

     seq 10 | parallel echo this is input {} '>' output_{} 

    )

    Он будет создавать output_# , output_#.err , output_#.seq .

    Linux и Unix - лучшая ОС в мире.