Kom*_*thi 10 parallel-processing bash multithreading fastq
这是我的脚本:
#!/bin/bash
#script to loop through directories to merge fastq files
sourcedir=/path/to/source
destdir=/path/to/dest
for f in $sourcedir/*
do
fbase=$(basename "$f")
echo "Inside $fbase"
zcat $f/*R1*.fastq.gz | gzip > $destdir/"$fbase"_R1.fastq.gz
zcat $f/*R2*.fastq.gz | gzip > $destdir/"$fbase"_R2.fastq.gz
done
Run Code Online (Sandbox Code Playgroud)
这里目录'source'中有大约30个子目录.每个子目录都有一些R1 .fastq.gz文件和R2 .fastq.gz,我想将它们合并到一个R1.fastq.gz和R2.fastq.gz文件中,然后将合并后的文件保存到目标目录.我的代码工作正常,但由于数据量的原因,我需要加快速度.我只想知道有什么办法可以在我的脚本中实现多线程编程吗?如何运行我的脚本以便多个作业并行运行?bash脚本新手,所以任何帮助将不胜感激.
最简单的方法是在后台执行命令,方法是添加&到命令的末尾:
#!/bin/bash
#script to loop through directories to merge fastq files
sourcedir=/path/to/source
destdir=/path/to/dest
for f in $sourcedir/*
do
fbase=$(basename "$f")
echo "Inside $fbase"
zcat $f/*R1*.fastq.gz | gzip > $destdir/"$fbase"_R1.fastq.gz &
zcat $f/*R2*.fastq.gz | gzip > $destdir/"$fbase"_R2.fastq.gz &
done
Run Code Online (Sandbox Code Playgroud)
从bash手册:
如果命令由控制操作符'&'终止,则shell在子shell中异步执行命令.这称为在后台执行命令.shell不等待命令完成,返回状态为0(true).当作业控制未激活时(请参阅作业控制),在没有任何显式重定向的情况下,异步命令的标准输入将从/ dev/null重定向.
| 归档时间: |
|
| 查看次数: |
16022 次 |
| 最近记录: |