nohup 不生成日志_批量与并行不一样

0b37d6959b003780e2a8c837e404d88a.png

健明

5分钟前:

看着新学徒慢慢成长,很开心,虽然他们总是犯一些让人很恼火的错误,但这可能就是成长的代价吧!

感兴趣的,可以看看这个错误是如何的明显!

如果你完全无法看懂,你可能需要把我B站linux视频刷一波!

523f24ce90346abdf3342100c0d549f9.png

全文目录

入门级 做好配置文件 命令脚本文件 提交至后台 进阶级 做好配置文件 命令脚本文件 提交至后台 补充一个错误的例子

在使用Linux做NGS数据处理的过程中,批量处理是提高工作效率的好方法。批处理的方法有很多,今天我们就介绍两个不同级别的批处理方法。

入门级

接受过我们生信技能树线下培训的粉丝都知道,,在我们的课程中会介绍一种批处理的方法,如:

2bd2b854dab7992a4e181899bdd1c6f4.png
dbbdc16e55b71a1d97f22c497bd781b0.png
做好配置文件

简单地讲,我们需要先制作一个配置文件,这里命名为config,然后config文件如以下所示

$ cat config 
SRR1039510_1.fastq.gz    SRR1039510_2.fastq.gz
SRR1039511_1.fastq.gz    SRR1039511_2.fastq.gz
SRR1039512_1.fastq.gz    SRR1039512_2.fastq.gz
命令脚本文件

然后把我们的代码写入到一个shell脚本中,这里命名为qc.sh(注:代码中的$1是后面要传入的config)

$ cat qc.sh
#!/bin/bash
cat $1 |while read id
do
arr=(${id})
fq1=${arr[0]}
fq2=${arr[1]}
trim_galore -q 25 --phred33 \
--length 36 --stringency 3 --paired \
-o ./ $fq1 $fq2
done
提交至后台

最后再提交至后台

nohup bash qc.sh config &

最后的最后,要学会通过top查看命令是否成功提交了,如果提交成功,服务器会一个一个地处理数据,这样我们就可以忙别的事情了,等到数据处理得差不多再看处理结果。

4789229b113d45475b2fd09cbbaa208e.png

进阶级

假如你觉得上面一个一个地处理太!慢!了!那你可以看看下面的进阶处理方法

做好配置文件

同样的做一个config

$ cat config 
SRR1039510_1.fastq.gz    SRR1039510_2.fastq.gz
SRR1039511_1.fastq.gz    SRR1039511_2.fastq.gz
SRR1039512_1.fastq.gz    SRR1039512_2.fastq.gz
......这里省略若干行......
命令脚本文件
$ cat qc.sh
#!/bin/bash
number1=$2
number2=$3
cat $1  | while read id
do
    if((i%$number1==$number2))
    then
    arr=(${id})
    fq1=${arr[0]}
    fq2=${arr[1]}
    trim_galore -q 25 --phred33 \
    --length 36 --stringency 3 --paired \
    -o ./ $fq1 $fq2
    fi    ## end for number1
    i=$((i+1))
done
提交至后台

最后再提交至后台

for i  in {0..2}
do 
(nohup bash qc.sh  config 3 $i 1>log.$i.txt 2>&1 & )
done 

最后的最后,要学会通过top查看命令是否成功提交了,如果提交成功,服务器会批量处理数据,向这里的例子,每次就同时处理3个数据了,当然前提是服务器的资源足够。

e3e6a3231753210d27ce0759ab88556b.png

补充一个错误的例子

命令提交后一定要检查,最简单粗暴的就是用top实时查看运行情况。

同样的,这个例子的配置文件是这样

$ cat config 
SRR1039510    SRR1039510_1.fastq.gz   SRR1039510_2.fastq.gz
SRR1039511    SRR1039511_1.fastq.gz   SRR1039511_2.fastq.gz
SRR1039512    SRR1039512_1.fastq.gz   SRR1039512_2.fastq.gz
......这里省略若干行......

脚本是这样(这个脚本是有问题的,我们先留个悬念)

$ cat qc.sh
#!/bin/bash
number1=$2
number2=$3
cat $1  | while read id
do
    if [ ! -f ok.trim.$sample.status ]
    then
        touch ok.trim.$sample.status
        echo "start trim for $sample" `date`
        arr=(${id})
        sample=${arr[0]}
        fq1=${arr[1]}
        fq2=${arr[2]}
        trim_galore -q 25 --phred33 \
        --length 36 --stringency 3 --paired \
        -o ./ $fq1 $fq2
        echo "end trim for $sample" `date`
    fi    
done

最后提交命令

for i  in {0..2}
do 
(nohup bash qc.sh  config 3 $i 1>log.$i.txt 2>&1 & )
done 

top之后仍然可以看到任务在运行,3个(不要以为这样就ok了)

2db5957f7446dfba2838ddf20cb80361.png

我们检查一下生成的文件,发现生成的文件却只有一个样本的

$ ll -th
-rw-rw-r-- 1 hcguo hcguo 1.2G Jun 18 17:45 SRR1039510_1_trimmed.fq.gz
-rw-rw-r-- 1 hcguo hcguo 1.6K Jun 18 17:45 log.0.txt
-rw-rw-r-- 1 hcguo hcguo 1.6K Jun 18 17:45 log.2.txt
-rw-rw-r-- 1 hcguo hcguo 1.6K Jun 18 17:45 log.1.txt
-rw-rw-r-- 1 hcguo hcguo  544 Jun 18 17:39 SRR1039510_1.fastq.gz_trimming_report.txt
-rw-rw-r-- 1 hcguo hcguo    0 Jun 18 17:39 ok.trim..status

仔细看top命令时,发现3个命令其实处理的是同一个样本,也就是说我们提交的命令有问题,这个时候我们应该进一步查看一下log日志或者nohup.out,看看问题所在(这里不做演示了)

a6ed689de4e0fd475a7e99c5f3a63d22.png

如果你对上面的代码及图表完全无法理解,那么你可能需要下面的课程:

全国巡讲约你

生信技能树(爆款入门培训课)全国巡讲约你

第一站-重庆  (已结束)

粤港澳大湾区专场 (已结束)

第二站-济南 (已结束)

千呼万唤进北京(已结束)

巡讲-广州和上海(已结束)

郑州和西安(全部结束)

第9、10站-武汉和成都(武汉结束,成都火热报名中)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值