重定向python脚本stdout+;使用参数归档和筛选的时间

重定向python脚本stdout+;使用参数归档和筛选的时间,python,time,stdout,tee,Python,Time,Stdout,Tee,我在结合python、time和tee时遇到了一些问题 我有一个script.sh,其中包含以下行: { time python extractPassRate.py -i DataPaths/background.list -o PassRates/background.csv ; } 2>&1 | tee log.log 然而,当我这样做时: source script.sh 航站楼就这么挂着 有趣的是,当我将该行替换为: { time python extractPass

我在结合python、time和tee时遇到了一些问题

我有一个script.sh,其中包含以下行:

{ time python extractPassRate.py -i DataPaths/background.list -o PassRates/background.csv ; } 2>&1 | tee log.log
然而,当我这样做时:

source script.sh
航站楼就这么挂着

有趣的是,当我将该行替换为:

{ time python extractPassRate.py ; } 2>&1 | tee log.log
(即,如果删除python脚本参数) 或

(未保存到log.log)

剧本很好用


第一行有什么问题吗?

通过谷歌搜索,我在这里找到了解决方案,作者:Matthew Alpert:

这似乎是由于缓冲问题

马修的回答是:

expect包中的程序unbuffer将解决 缓冲问题。这将导致stdout和stderr写入 立即筛选和归档,并在合并时保持同步 并重定向到发球台。例如:

$unbuffer程序[参数…]2>&1 | T输出文件

这对我很有用

{ time python extractPassRate.py -i DataPaths/background.list -o PassRates/background.csv ; } 2>&1