tmux 中是否有等效于 GNU Screen 的“log”命令?

Mur*_*iar 38 logs gnu-screen tmux

当我在给定环境中进行更改时,我大量使用 screen 的“log”命令将会话的输出记录到文件中。我搜索了 tmux 的手册页,但找不到等效的。有没有人知道 tmux 中的类似功能,或者我是否必须编写自己的包装器脚本才能做到这一点?

编辑:我知道允许我记录会话的“脚本”和其他实用程序。screen 的功能如此有用的原因是能够定义一个日志文件变量,该变量使用字符串转义来唯一标识每个会话。

例如,我有一个 shell 函数,给定一个主机名,它将在新的屏幕窗口中通过 SSH 连接到该主机,并将窗口标题设置为主机名。当我开始记录该会话时,它以窗口标题为前缀。

如果 tmux 中不存在此功能,我将不得不创建一组新的 shell 函数来设置我想要记录的会话的“脚本”。这并不是非常困难,但考虑到屏幕已经完全满足我的需求,这可能不值得付出努力。

Chr*_*sen 39

让我看看我是否正确解读了您的屏幕配置:

  • 您可以使用类似logfile "%t-screen.log"(可能在.screenrc文件中)来配置稍后将启动的日志文件的名称。
  • 您可以使用title <hostname>(CA A)屏幕命令来设置一个新的窗口标题,或者
    screen -t <hostname> ssh0 <hostname>开始一个新的屏幕会话。
  • 您可以使用 Ca H (Ca :log)屏幕命令将日志记录切换到配置文件。

如果是这样,则几乎等效(需要tmux 1.3+ 以支持pipe-paneshell 命令中的#W ;pipe-panetmux 1.0+ 中可用):

  • 在配置文件中(例如.tmux.conf):

    bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'"
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用tmux rename-window <hostname>(Cb ,) 重命名现有窗口,或
    用于tmux new-window -n <hostname> 'ssh <hostname>'启动新的tmux窗口,或
    用于tmux new-session -n <hostname> 'ssh <hostname>'启动新的tmux会话。
  • 使用 Cb H 切换日志记录。

没有关于日志已被切换的通知,但您可以根据需要添加一个:

bind-key H pipe-pane -o "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Toggled logging to $HOME/#W-tmux.log'
Run Code Online (Sandbox Code Playgroud)

注意:上面的行显示为好像它在配置文件中(或者.tmux.confsource)。tmux需要看到反斜杠和分号;如果您想从 a shell(例如tmux bind-key …)配置它,那么您必须适当地转义或引用这两个字符,以便它们完整地传递给tmux。当仅使用单个绑定时,似乎没有一种方便的方法来显示用于切换开/关的不同消息(您可能可以使用 来装配某些东西if-shell,但它可能会很丑陋)。如果可以接受两个绑定,请尝试以下操作:

bind-key H pipe-pane "exec cat >>$HOME/'#W-tmux.log'" \; display-message 'Started logging to $HOME/#W-tmux.log'
bind-key h pipe-pane \; display-message 'Ended logging to $HOME/#W-tmux.log'
Run Code Online (Sandbox Code Playgroud)

  • @KamilDziedzic:你可以尝试在你的 `default-command` 中包含一个 `tmux pipe-pane ...` 命令(即在启动 shell 之前);当然,这只适用于“默认”窗格(没有以显式命令开头,例如`new-window sqlite3`)。有迹象表明,“hook”支持可能会出现在*tmux* 的某些未来版本中;这可能会让你配置一个命令(例如`pipe-pane ...`)在其他一些命令`new-session`、`new-window`或`split-pane`之后自动运行)。 (2认同)

小智 5

这是一个 tmux 插件,它可以在不干扰键绑定的情况下进行日志记录.tmux.conf

https://github.com/tmux-plugins/tmux-logging

特征:

  • prefix + P切换窗格日志记录。从不需要的 ANSI 字符中清除输出!
  • prefix + Alt + P 将完整的窗格历史保存到文件中