如何重新进入容器查看持续运行的Python脚本输出?
问题描述
我有一个容器和一段需要持续运行的Python脚本,示例代码如下:
import time if __name__ == "__main__": n = 0 while True: print(f"Script is running! I want to see this string ! N is {n}") n += 1 time.sleep(200)
我的操作流程:
- 使用MobaXterm登录虚拟机
- 通过
docker exec -it -u root container_name bash进入容器 - 在容器内执行
python my_script.py启动脚本 - 脚本运行后,能在标准输出中看到打印内容:
Script is running! I want to see this string !
但后续会话中断,脚本仍在运行。请问如何在不中断脚本的前提下,重新查看该脚本的输出日志?
解决方案
方法1:直接查看Docker容器日志(最省事)
你直接在容器里跑的脚本,它的标准输出默认会被Docker收集到容器日志里,不用进容器就能看:
# 查看全部日志 docker logs container_name # 实时跟踪最新日志(类似tail -f) docker logs -f container_name # 只看最后100行日志 docker logs --tail 100 container_name
方法2:启动时重定向输出到文件(适合长期留存)
下次启动脚本时,直接把输出写到容器内的日志文件里,后续随时能查看:
# 把标准输出和错误都写到日志文件,同时让脚本后台运行 python my_script.py > /var/log/my_script.log 2>&1 &
之后不管会话断没断,都可以用以下方式查看:
# 实时跟踪日志 docker exec container_name tail -f /var/log/my_script.log # 查看全部日志内容 docker exec container_name cat /var/log/my_script.log
方法3:用nohup启动脚本(兼顾后台运行和输出留存)
下次启动脚本时用nohup,它会忽略会话断开的信号,脚本继续运行,输出默认存到nohup.out文件:
nohup python my_script.py &
之后查看日志直接找这个文件就行:
# 查看全部内容 docker exec container_name cat nohup.out # 实时跟踪最新输出 docker exec container_name tail -f nohup.out
内容的提问来源于stack exchange,提问作者ooolllooo
相关产品推荐
相关产品推荐

