执行tail -f命令时,不能实时看到print命令的输出
下面的代码,保存到文件z.py里面。
import time
from tqdm import tqdm
for vin in tqdm(range(10)):
print(vin)
time.sleep(1)
后台执行:nohup python3 z.py > z.log 2>&1 &
,
执行tail -f z.log
,不能够实时看到print(vin)
的打印结果,而是程序结束后一次性输出,为什么?
当你使用 nohup
命令将 Python 脚本放入后台执行时,它将脱离终端并且不再将标准输出(stdout)和标准错误输出(stderr)直接连接到终端。这就是为什么你在执行 tail -f z.log
时不能实时看到 print(vin)
的输出。
为了实时查看输出,你可以在 Python 脚本中使用以下方法之一:
-
使用
sys.stdout.flush()
:在每次打印后手动刷新标准输出。这样可以强制将缓冲区的内容刷新到文件中,从而实时看到输出。你需要导入sys
模块来使用它。import time from tqdm import tqdm import sys for vin in tqdm(range(10)): print(vin) sys.stdout.flush() time.sleep(1)
-
使用
-u
选项:在命令行中使用python3 -u
来执行脚本。这个选项会禁用输出缓冲,从而实时查看输出。示例:nohup python3 -u z.py > z.log 2>&1 &
使用其中一种方法,你应该能够实时查看脚本的输出,而不是在程序结束后才看到。
作者:jsp
-------------------------------------------
个性签名:无论在哪里做什么,只要坚持服务、创新、创造价值,其它的东西自然都会来的。
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
标签:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY