如何在 Linux 上获取 tmux 会话的完整控制台日志?

如何在 Linux 上获取 tmux 会话的完整控制台日志?

我在 Google Cloud 上有一个 Linux 虚拟机,它有一个正在运行 .py 文件的 tmux 会话,我正在尝试获取控制台日志,但我无法向上滚动或执行任何操作。

任何想法?

这是我的控制台

答案1

您没有提到您如何尝试滚动。如果您尝试滚动终端窗口本身,那么这将不起作用,因为 Tmux 是全屏应用程序。这就像尝试滚动vim(或任何其他编辑器)。

然而,有多种选择:

Tmux复制模式

用于激活 Tmux 回滚机制(称为复制模式)的默认键绑定是Prefix(通常为Ctrl+ B),后跟[。然后通过箭头键滚动。

保存整个缓冲区

您还可以通过(至少)两种方式之一将整个缓冲区检索到文件中。首先,如果出现提示,您可以:

tmux capture-pane -pS - > ~/tmux-buffer.txt

但既然你提到你的 Python 编程正在运行,你需要:

  • 使用以下命令访问 Tmux 命令提示符Prefix:
  • 使用以下命令将窗格保存到缓冲区:
    capture-pane -S -
    
  • 再次访问 Tmux 提示符 ( Prefix:)
  • 将缓冲区保存到文件中:
    save-buffer ~/tmux-buffer.txt
    

另一种方法是结合前面的两个选项并tmux在 a 中运行命令run-shell

  • 使用以下命令访问 Tmux 命令提示符Prefix:
  • 通过以下方式运行第一个 Tmux 命令:
    run-shell "tmux capture-pane -pS - > ~/tmux-buffer.txt"
    
将缓冲区发送到另一个寻呼机

从命令行:

tmux capture-pane -pS - | less

从 Tmux 命令提示符处:

run-shell "tmux capture-pane -pS - | less"

更好的是,保留转义码,您可以包含其他格式和颜色:

tmux capture-pane -epS - | less -r
球座

tee最后,不要忘记在这种情况下的用处。如果您事先知道要捕获程序的输出,请使用以下命令将其发送到屏幕和文件tee

python myprog.py 2>&1 | tee ~/myprog-out.txt

当然,这将捕获stdout和。stderr

当然,对于之前所有的 Tmux 处理方式,额外的提前规划实际上是没有必要的。

相关内容