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>
开始一个新的屏幕会话。如果是这样,则几乎等效(需要tmux 1.3+ 以支持pipe-pane
shell 命令中的#W ;pipe-pane
在tmux 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会话。没有关于日志已被切换的通知,但您可以根据需要添加一个:
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.conf
你source
)。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)
小智 5
这是一个 tmux 插件,它可以在不干扰键绑定的情况下进行日志记录.tmux.conf
:
https://github.com/tmux-plugins/tmux-logging
特征:
prefix + P
切换窗格日志记录。从不需要的 ANSI 字符中清除输出!prefix + Alt + P
将完整的窗格历史保存到文件中 归档时间: |
|
查看次数: |
30478 次 |
最近记录: |