我正在尝试开发一个用Python代码(Ete软件)编写的生物信息软件的输出。我在Force flushing of output to a file while bash script is still running上尝试了详细的命令( stdbuf ),但是没有工作,因为我已经看到stdbuf命令只能从shell执行,而不能从bash(How to use stdbuf on a bash function)执行。
此外,在Python中,我发现了以下可能很有趣的函数:
import sys
sys.stdout.flush()但我不知道如何在下面附加的下一个bash脚本中实现。
其目的是,如果我只使用bash脚本中的选项-o和-e (如您所见),输出将以不连续的方式打印到logs_40markers,这不允许我看到错误。我可以直接从shell工作,但我的互联网连接不稳定,实际上每晚都有停电,我必须重新启动命令,这将花费最少的一个星期。
#!/bin/bash
#$ -N tree
#$ -o logs_40markers
#$ -e logs_40markers
#$ -q all.q@compute-0-3
#$ -l mf=100G
stdbuf -oL
module load apps/etetoolkit-3.1.2
export QT_QPA_PLATFORM='offscreen'
ete3 build -w mafft_default-none-none-none -m sptree_fasttree_all -o provaflush --cogs coglist_species_filtered.txt -a multifasta_speciesunique.fa --clearall --cpu 40
&> logs_40markers如果有人能给我一些指导/建议,请提前感谢,
祝您今天愉快,
谢谢,
马吉
发布于 2022-05-25 10:24:24
我的一个情报员同事用PYTHONUNBUFFERED命令解决了这个问题。
#!/bin/bash #$ -N tree #$ -o logs_40markers #$ -e logs_40markers #$ -q all.q@compute 0-3 #$ -l mf=100G
module load apps/etetoolkit-3.1.2
export QT_QPA_PLATFORM='offscreen'
export PYTHONUNBUFFERED="TRUE"
ete3 build -w mafft_default-none-none-none -m sptree_fasttree_all -o provaflush --cogs coglist_species_filtered.txt -a multifasta_speciesunique.fa --clearall --cpu 40 --v 4要检查进程的当前情况,输入shell:
tail output.log file -f (意思如下)
我希望有人能发现这个解决方案有帮助
https://stackoverflow.com/questions/72307085
复制相似问题