我有一个使用 Tmux 在远程系统上运行命令的脚本,有时它会由于 Tmuxlist-windows命令的运行方式而出错。例如,如果我在远程服务器上有两个 Tmux 会话:session1和session2。根据我是否在会话 1 或会话 2 中处于活动状态,tmux list-windows从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)
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我所做的只是附加到会话 1,然后从中分离。接下来,运行时tmux list-windows,您可以清楚地看到它显示的是来自 session1 而不是 session2 的窗口。
Tmux 有没有办法简单地从 Tmux外部列出特定会话中的窗口?这实际上可以解决我相当长一段时间以来一直面临的所有问题。
是的,您可以为大多数 tmux 命令指定特定会话。
tmux list-windows -t session2
Run Code Online (Sandbox Code Playgroud)
-t是您选择附加到特定会话 ( tmux a -t session1) 甚至特定会话/窗口/窗格组合的方式。
例如,如果我有一个会话sess,它有 3 个窗口,每个窗口有 4 个窗格,并且我想在第一个窗口、第三个窗格中运行htop,我会这样做
tmux send-keys -t sess:0.2 'htop' Enter
Run Code Online (Sandbox Code Playgroud)
因为 tmux 中的窗口/窗格是 0 索引的。
| 归档时间: |
|
| 查看次数: |
2106 次 |
| 最近记录: |