所以我正在处理集群中的脚本,我需要运行它:
convert_fastaqual_fastq.py -f ITS_C1-5_rRNA.fq -c fastq_q_to_fastaqual
convert_fastaqual_fastq.py -f ITS_C3-2_rRNA.fq -c fastq_q_to_fastaqual
convert_fastaqual_fastq.py -f ITS_C3-3_rRNA.fq -c fastq_q_to_fastaqual
convert_fastaqual_fastq.py -f ITS_C3-5_rRNA.fq -c fastq_q_to_fastaqual
convert_fastaqual_fastq.py -f ITS_C4-5_rRNA.fq -c fastq_q_to_fastaqual
convert_fastaqual_fastq.py -f ITS_C5-1_rRNA.fq -c fastq_q_to_fastaqual
convert_fastaqual_fastq.py -f ITS_C5-4_rRNA.fq -c fastq_q_to_fastaqual
convert_fastaqual_fastq.py -f ITS_C5-5_rRNA.fq -c fastq_q_to_fastaqual
如您所见,每条线都不同,每条线需要2天才能运行。 该命令的作用是将样本转换为两种不同的格式,但是从样本到样本。 我想要的是,当我运行脚本时,所有样本同时运行。
难看的解决方案是为每个样本生成一个文件,并在群集中的不同CPU上一次运行一个文件。我希望同时在同一时间运行一个作业。
谢谢!
答案 0 :(得分:1)
您可以执行以下操作,在后台启动每项作业,然后等待所有这些作业。模式ITS_C?-?_rRNA.fq
将匹配您指定的每个作业。
i=0
for file in ITS_C?-?_rRNA.fq; do
convert_fastaqual_fastq.py \
-f "$file" -c fastq_q_to_fastaqual \
1>> job"$i".out \
2>> job"$i".err &
((i++))
done
wait
如果您想了解哪些作业失败的更多信息,您可以执行类似此操作而不是wait
(请注意,这需要您跟踪哪个pid与哪个文件相关联)
for job in $(jobs -p); do
if wait "$job"; then
printf "job %s succeeded\n" "$job"
else
printf "job %s failed\n" "$job"
fi
done