You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重新进入容器查看持续运行的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:42:03