离开 tmux 会话后如何访问它?

离开 tmux 会话后如何访问它?

我在 EC2 AWS 上使用tmux,但我想查看我创建的一个会话中发生的情况。

我使用Ctrl+b然后d离开会话。

答案1

我想查看我创建的一个会话中发生的情况。

据我所知,您可以tmux使用以下方式查看会话列表

tmux list-sessions查看当前正在运行的会话tmux

要真正看到这些会话中正在运行的内容,您必须附加到特定的会话,为此您有两个选择(根据经验)。

  1. 如果您当前没有运行tmux会话(或当前不在tmux会话中),您可以通过运行进行连接tmux attach -t n(其中 -t 代表目标会话,n 代表该会话编号)。

  2. 如果你在另一个 tmux 会话中运行,则在尝试连接到另一个会话时会出错,因此查看正在运行的内容的最简单方法是使用该tmux list-windows -a命令移动无论您在哪个窗格/窗口中运行任务。

移动窗口

使用tmux move-window -s n1 -t n2-s == 源窗口-t == 目标窗口源窗口将附加到的位置。n1== 您要移动的窗口的编号以及n2是您要移动到的窗口编号)。

格式

n1&n2数字的排序/格式为sessionNumb:windowNumb。因此,第一个窗口中的第一个会话将是 0:1,而第一个窗口中的第二个会话将是 1:1。

笔记n2必须是具有尚未创建窗口的可用会话。如果将窗口移动到已创建的窗口,您将收到一条错误消息,提示“目标窗口不为空”,而移动到未创建的会话将出现错误消息“找不到会话 n”。

移动窗格

有时在一个窗口中您可能有许多窗格而您只需要移动一个窗格,如果您只需要将该窗格移动到当前窗口内(因为您不能将一个窗口移动到另一个窗口内),这将很有用。

您使用与移动窗口几乎类似的语法,但您确实这样做了tmux move-pane -s *n1* -t *n2*

在哪里n1现在的格式sessionNumb:windowNumb.paneNumbn2

例子

之后tmux list-windows -a你将得到类似这样的结果

0:1: Project- (4 panes) [177x48]
0:2: Mirror (3 panes) [177x48]
0:3: Chat! (1 panes) [177x48]
0:4: ssh* (1 panes) [177x48]
1:1: zsh (2 panes) [176x45]
1:2: zsh* (1 panes) [176x45]
1:3: zsh- (1 panes) [176x45]

现在,我必须运行将窗口“聊天”从第一个会话移动到第二个会话tmux move-window -s 0:3 -t 1:4(记住不能将窗口移动到已经创建的窗口)。

移动窗格

如果你只需要移动一个窗格,那么你需要这样做tmux list-panes -a,或者如果你已经知道它来自哪个窗口,你可以tmux list-panes -t 0:1 请参阅上面的格式说明

结果显示会话 0 窗口 1 (-s 0:1) 有这些窗格。

1: [177x34] [history 3/10000, 4119 bytes] %7 (active)
2: [88x13] [history 541/10000, 231972 bytes] %8
3: [88x13] [history 2/10000, 1541 bytes] %9

这是不可接受的,但如果你需要查看更多信息,以便知道你真正需要哪个窗格,你可以这样做

tmux list-panes -F "#{pane_current_command}" -t 0:1

每个窗格将显示当前正在运行的命令。

就我而言

vim
zsh
python (sadly it's running `ranger`)

因此,在确定您想要哪个窗格(比如 vim 窗格)后,您需要移动它。

tmux move-pane -s 0:1.1 -t 1:1.2移动到特定窗格在这种情况下

如果目标窗口中只有一个窗格,则可以tmux move-pane -s 0:1.1 -t 1:1.没有目标窗格,它仍然可以工作。

答案2

根据上面的回答,你可以尝试:

tmux ls获取会话编号。然后

tmux attach-session -t <session_number>

答案3

如果您有一个 tmux 会话,请使用:

tmux a

访问它

答案4

如果你想将其绑定到 shell 中的一个键(为了让它在你离开 tmux 时能够无缝地重新进入),你可以做类似的事情。这是针对zsh

我猜测只有functionbindkey形式与其他外壳之间会略有不同。

在我的~/.zshrc

function tmux_last_session(){

    LAST_TMUX_SESSION=$(tmux list-sessions | awk -F ":" '{print$1}' | tail -n1);
    tmux attach -t $LAST_TMUX_SESSION
}
bindkey -s '^s' 'tmux_last_session ^M'

来源它。source ~/.zshrc

Ctrl+s现在打开最后一个分离的 tmux 会话。

相关内容