我可以在不附加的情况下查看 tmux 会话中发生的情况吗?

我可以在不附加的情况下查看 tmux 会话中发生的情况吗?

我通常会用来tmux启动一个将运行一段时间的任务。我会定期返回并使用它进行检查tmux -a,如果仍未完成则断开连接并稍后再次检查。

有没有办法只查看会话中发生的情况的简短快照而不完全附加?我正在寻找类似理论上tail在会话上执行 a 以获得最后一点输出的东西(但如果我可以避免使用输出的副本创建另一个文件就更好了)

也许连接并立即将其分离也可以。我正在尝试保存击键,也许这样的命令可以远程执行,
ssh root@server tmux --tail

答案1

我认为capture-pane可能适合您的需求:

tmux capture-pane -pt "$target-pane"

(有关指定窗格的方法,请参阅手册页中的“target-pane”)

默认情况下,该命令将转储指定窗格的当前内容。您可以使用-S和选项(起始行号和结束行号)指定行范围-E:第一行是 0,负数指的是窗格“向后滚动”历史记录中的行。因此,添加-S -10可以获取最近的十行历史记录以及窗格的当前内容。

tmux capture-pane -pt "$target-pane" -S -10

-p选项是在 1.8 中添加的。如果您运行的是早期版本,那么您可以这样做:

tmux capture-pane -t "$target_pane" \; save-buffer - \; delete-buffer

但是,如果您通过以下方式发出此命令,请注意这些分号,ssh因为远程 shell 将添加额外级别的 shell 解释(分号需要作为参数传递给最终的命令)多路复用器命令,它们不得由本地或远程 shell 解释)。

答案2

并不真地。我想到的一种方法是启动长时间运行的进程 ( ),然后定期运行相关会话$lrp,无需重新连接。list-windows

在某些时候,带有 $lrp 的 tmux 窗口的名称将更改回默认值,通常是您的 shell,并且您将能够看到 $lrp 已完成。

┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1  (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH  (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC  (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: $lrp* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)
┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1  (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH  (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC  (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: bash* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)

相关内容