Output
為什麼這個並行程序不將輸出寫入文件而是列印到控制台?
免責聲明:這是我在 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
列印到特定文件而不是控制台?
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
.