You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何不进入session获取运行中screen实例的当前输出?

无需进入Screen会话查看输出的几种方法

当然可以!不用进入目标screen会话也能轻松获取它的输出内容,下面是几个实用的方案:

1. 单次捕获当前屏幕快照

使用screen -X hardcopy命令可以快速导出会话当前显示的内容到文件,非常适合临时查看:

  • 先列出所有screen会话,找到你要查看的会话ID或名称:
    screen -list
    
  • 导出指定会话的屏幕内容到自定义文件:
    screen -S [会话ID/名称] -X hardcopy /tmp/screen_current_output.txt
    
  • 查看导出的内容:
    cat /tmp/screen_current_output.txt
    

如果需要捕获滚动缓冲区里的历史内容(不止当前屏幕显示的),可以加上-h参数:

screen -S [会话ID/名称] -X hardcopy -h /tmp/screen_history_output.txt

2. 开启实时日志记录

如果需要持续跟踪程序的输出,可以远程给screen会话开启日志功能,之后直接查看日志文件即可:

  • 先指定日志文件路径(可选,默认是会话目录下的screenlog.0):
    screen -S [会话ID/名称] -X logfile /var/log/screen_continuous.log
    
  • 开启日志记录:
    screen -S [会话ID/名称] -X log on
    
  • 实时查看最新输出:
    tail -f /var/log/screen_continuous.log
    

不需要日志时记得关闭:

screen -S [会话ID/名称] -X log off

3. 发送命令让程序输出重定向(进阶)

如果程序本身支持输出重定向,你还可以远程给screen会话发送命令,让程序把输出写到指定文件:

# 发送Ctrl+C暂停程序(如果需要),然后发送重定向命令,最后重启程序
screen -S [会话ID/名称] -X stuff "^C"
screen -S [会话ID/名称] -X stuff "your_program >> /tmp/program_output.log 2>&1\n"

这个方法适合需要长期捕获程序输出,但之前没开日志的场景,不过要注意会中断当前运行的程序。

内容的提问来源于stack exchange,提问作者Waka

火山引擎 最新活动