如何针对特定的 tmux 会话
How to target a particular tmux session
我有一个使用 Tmux 在远程系统上执行 运行 命令的脚本,有时它会因为 Tmux 的 list-windows
命令是 运行 的方式而搞砸。例如,如果我在远程服务器上有两个 Tmux 会话:session1
和 session2
。根据我是否在会话 1 或会话 2 中活跃,运行ning tmux list-windows
from outside of Tmux 给了我两个完全不同的结果:
这是一个例子:
[root:kali:]# tmux ls
session1: 2 windows (created Tue Nov 5 18:22:58 2019)
session2: 3 windows (created Wed Nov 6 18:21:04 2019)
[root:kali:]# tmux list-windows
0: zsh* (1 panes) [215x53] [layout 5de0,215x53,0,0,30] @28 (active)
1: tool (1 panes) [80x24] [layout 5963,80x24,0,0,33] @31
2: script- (1 panes) [215x53] [layout 5de4,215x53,0,0,34] @32
[root:kali:]# tmux a -t session1
[detached (from session session1)]
[root:kali:]# tmux list-windows
0: zsh- (1 panes) [215x53] [layout bb5d,215x53,0,0,0] @0
1: msf* (1 panes) [215x53] [layout dde6,215x53,0,0,27] @25 (active)
在上面的示例中,我所做的只是附加到会话 1,然后从中分离。接下来,当 运行ning tmux list-windows
时,您可以清楚地看到它显示的是来自 session1 而不是 session2 的 windows。
Tmux 有没有一种方法可以简单地列出来自 Tmux 外部 的特定会话的 windows?这将真正解决我长期以来一直面临的所有问题。
是的,您可以为大多数 tmux 命令指定一个特定的会话。
tmux list-windows -t session2
-t
是您选择附加到特定会话 (tmux a -t session1
) 甚至特定 session/window/pane 组合的方式。
例如,如果我有一个会话 sess
,它有 3 个 windows,每个有 4 个窗格,我想在第一个 运行 htop
window,第三个窗格,我愿意
tmux send-keys -t sess:0.2 'htop' Enter
因为 window/panes 在 tmux 中是 0 索引的。
我有一个使用 Tmux 在远程系统上执行 运行 命令的脚本,有时它会因为 Tmux 的 list-windows
命令是 运行 的方式而搞砸。例如,如果我在远程服务器上有两个 Tmux 会话:session1
和 session2
。根据我是否在会话 1 或会话 2 中活跃,运行ning tmux list-windows
from outside of Tmux 给了我两个完全不同的结果:
这是一个例子:
[root:kali:]# tmux ls
session1: 2 windows (created Tue Nov 5 18:22:58 2019)
session2: 3 windows (created Wed Nov 6 18:21:04 2019)
[root:kali:]# tmux list-windows
0: zsh* (1 panes) [215x53] [layout 5de0,215x53,0,0,30] @28 (active)
1: tool (1 panes) [80x24] [layout 5963,80x24,0,0,33] @31
2: script- (1 panes) [215x53] [layout 5de4,215x53,0,0,34] @32
[root:kali:]# tmux a -t session1
[detached (from session session1)]
[root:kali:]# tmux list-windows
0: zsh- (1 panes) [215x53] [layout bb5d,215x53,0,0,0] @0
1: msf* (1 panes) [215x53] [layout dde6,215x53,0,0,27] @25 (active)
在上面的示例中,我所做的只是附加到会话 1,然后从中分离。接下来,当 运行ning tmux list-windows
时,您可以清楚地看到它显示的是来自 session1 而不是 session2 的 windows。
Tmux 有没有一种方法可以简单地列出来自 Tmux 外部 的特定会话的 windows?这将真正解决我长期以来一直面临的所有问题。
是的,您可以为大多数 tmux 命令指定一个特定的会话。
tmux list-windows -t session2
-t
是您选择附加到特定会话 (tmux a -t session1
) 甚至特定 session/window/pane 组合的方式。
例如,如果我有一个会话 sess
,它有 3 个 windows,每个有 4 个窗格,我想在第一个 运行 htop
window,第三个窗格,我愿意
tmux send-keys -t sess:0.2 'htop' Enter
因为 window/panes 在 tmux 中是 0 索引的。