离开后如何访问 tmux 会话?

Vit*_*lla 30 tmux 16.04

tmux在 EC2 AWS 上使用,但我想看看我创建的一个会话中发生了什么。

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

Arc*_*oob 38

我想看看我创建的一个会话中发生了什么。

据我所知,您可以使用以下命令查看您的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是您要移动到的窗口的编号)。

格式

N1N2号排序/格式化为sessionNumb:windowNumb。所以第一个窗口中的第一个会话将是 0:1,第一个窗口中的第二个会话将是 1:1。

注意n2必须是一个尚未创建窗口的可用会话。如果您将窗口移动到已创建的窗口,您将收到一条错误消息,指出“目标窗口不是空的”,而移动到未创建的会话将出现错误“找不到会话 n”。

移动窗格

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

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

N1现在被格式化为sessionNumb:windowNumb.paneNumb等为N2

例子

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]
Run Code Online (Sandbox Code Playgroud)

现在,将窗口“聊天”从第一个会话移动到我必须运行的第二个会话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
Run Code Online (Sandbox Code Playgroud)

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

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

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

就我而言

vim
zsh
python (sadly it's running `ranger`)
Run Code Online (Sandbox Code Playgroud)

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

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

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


Zak*_*akS 10

按照上面的答案,您可以尝试:

tmux ls获取会话号。进而

tmux attach-session -t <session_number>