bash为每个文件创建进程日志

时间:2016-02-20 14:28:06

标签: bash

我正在使用bash一个接一个地运行多个进程。我想创建一个每个进程的日志,一个进程启动和完成的日志,但下面只创建并清空log。谢谢你:)。

因此,当第一个进程(# create BAM Index)运行时,会创建一个日志,其中包含启动和完成的时间。

每个进程可能有多个文件,但每个进程只需要1个日志。

运行第二个进程(# strip off @PG tags)时,将创建一个日志,其中包含启动和完成的时间。谢谢你:)。

的bash

# create BAM Index
logfile=/home/cmccabe/Desktop/NGS/API/2-12-2015/log.log
for f in /home/cmccabe/Desktop/NGS/API/2-12-2015/*.bam ; do
 bname=`basename $f`
 pref=${bname%%.bam}
 samtools index $f
done > "$logfile"

# strip off @PG tags
logfile=/home/cmccabe/Desktop/NGS/API/2-12-2015/log.log
for f in /home/cmccabe/Desktop/NGS/API/2-12-2015/*.bam ; do
 bname=`basename $f`
 pref=${bname%%.bam}
 samtools view -H $f | sed '/^@PG/d' | samtools reheader - $f > /home/cmccabe/Desktop/NGS/API/2-12-2015/${pref}_newheader.bam
done > "$logfile"

1 个答案:

答案 0 :(得分:3)

正如我在评论中提到的那样:

我不建议您在将用于生成所述输出的循环中定义输出日志文件。

第二个从循环输出数据我会在循环结束时管道数据:done > "$logfile"

我按照下面的方式运行你的脚本,但它实际上并没有输出任何内容。

logfile=log.log

# create BAM Index
for f in *.bam ; do
 bname=`basename $f`
 pref=${bname%%.bam}
 samtools index $f
done > "$logfile"


# strip off @PG tags
for f in *.bam ; do
 bname=`basename $f`
 pref=${bname%%.bam}
 samtools view -H $f | sed '/^@PG/d' | samtools reheader - $f > ${pref}_newheader.bam
done > "$logfile"

如果你想实现这一点,可以添加一行来回显流程的开始和结束,如下所示。另请注意,在第二个循环中,输出通过语法>>附加到日志中,否则您将使用>覆盖日志

logfile=log.log

# create BAM Index
for f in *.bam ; do
    echo "Start Index creation: $(date) - File: $f"
    bname=$(basename $f)
    pref=${bname%%.bam}
    samtools index $f
    echo "End Index  creation: $(date) - File: $f"
done > "$logfile"


# strip off @PG tags
for f in *.bam ; do
    echo "Start @PG tag strip creation: $(date) - File: $f"
    bname=$(basename $f)
    pref=${bname%%.bam}
    samtools view -H $f | sed '/^@PG/d' | samtools reheader - $f > ${pref}_newheader.bam
    echo "End @PG tag strip creation: $(date) - File: $f"
done >> "$logfile"

日志文件看起来像:

Start Index creation: Sat Feb 20 09:58:46 EST 2016 - File: wgEncodeUwRepliSeqBjG1bAlnRep1.bam
End Index  creation: Sat Feb 20 09:58:47 EST 2016 - File: wgEncodeUwRepliSeqBjG1bAlnRep1.bam
Start @PG tag strip creation: Sat Feb 20 09:58:47 EST 2016 - File: wgEncodeUwRepliSeqBjG1bAlnRep1.bam
End @PG tag strip creation: Sat Feb 20 09:58:47 EST 2016 - File: wgEncodeUwRepliSeqBjG1bAlnRep1.bam