[英]Redirect python script stdout + time to file AND to screen with arguments
我在结合python,时间和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脚本参数)或
{ time python extractPassRate.py -i DataPaths/background.list -o PassRates/background.csv ; } 2>&1
(不保存到log.log)
该脚本有效。
第一行有问题吗?
到处搜寻,我在这里找到了解决方案,作者是Matthew Alpert: 如何将输出重定向到文件和stdout
看来这是由于缓冲问题。
马修的回答是:
程序取消缓冲(expect包的一部分)将解决缓冲问题。 这将导致stdout和stderr立即写入屏幕并归档,并在组合并重定向到tee时保持同步。 例如:
$ unbuffer program [arguments ...] 2>&1 | 开球
那对我有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.