我正在运行的程序具有较大的运行时和较大的输出,因此为了在查看输出时进行记录,我在Windows tee
上使用cmd.exe
命令:
./program | tee -a program.log
program
打印实时输出(在明显的时间间隔后逐行输出),但是tee
仅在程序终止后打印输出。有什么方法可以将tee
用于实时输出?
注意:问题在Windows powershell.exe
上仍然存在
答案 0 :(得分:2)
Tee-Object
不会刷新输出流本身。它等待解释器执行此操作,并且解释器经常等待一会儿。这是设计使然。
我会提出一种解决方案,例如:
./program | ForEach-Object {
Write-Host $_
$_
} | Set-Content program.log
如果您仍然遇到问题,请尝试:
./program | ForEach-Object {
[Console]::WriteLine($_)
[Console]::Out.Flush()
$_
} | Set-Content program.log
那应该与Write-Host
相同,但是暂时我不确定刷新到控制台的频率。
答案 1 :(得分:0)
虽然目前尚不清楚您在做什么,但听起来您可以使用重定向到输出日志文件的方式,而不是使用tee。
我不熟悉您如何使用AI训练脚本,但是通过将stderr和stout都发送到同一文件,以下操作可能会起作用。然后,您可以使用PowerShell命令“ Get-Content output.log –Wait”或您选择的其他方法来尾随文件。
python_script参数1> output.log 2>&1