bash - 如何定位特定的 tmux 会话
问题描述
我有一个脚本,它使用 Tmux 在远程系统上运行命令,有时由于 Tmux 的list-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)
在上面的示例中,我所做的只是附加到会话 1,然后从它分离。接下来,在运行时tmux list-windows
,您可以清楚地看到它显示的是来自 session1 而不是 session2 的窗口。
Tmux 有没有办法从 Tmux外部简单地列出特定会话中的窗口?从字面上看,这将解决我在很长一段时间内一直面临的所有问题。
解决方案
是的,您可以为大多数 tmux 命令指定特定会话。
tmux list-windows -t session2
-t
是您选择附加到某个会话 ( tmux a -t session1
) 甚至某个会话/窗口/窗格组合的方式。
例如,如果我有一个 session sess
,它有 3 个窗口,每个窗口有 4 个窗格,并且我想htop
在第一个窗口、第三个窗格中运行,我会这样做
tmux send-keys -t sess:0.2 'htop' Enter
因为 tmux 中的窗口/窗格是 0 索引的。
推荐阅读
- go-gorm - Golang - GORM 如何为现有表创建模型?
- audio - 正确的 WAVE_FORMAT_1S16 PCM 双通道格式?
- python - Django admin:根据另一个字段的值显示模型的字段
- python - 如何在 Kivy 中从 python 代码更改屏幕
- javascript - 意外的令牌“导出”
- functional-programming - 将包括列表在内的多个参数传递给函数
- python - 如何仅使用numpy python中的矩阵运算(无for循环)计算两个矩阵之间的欧几里得距离?
- swiftui - SwiftUI 请求将 App 更新到最新版本
- reactjs - React/Leaflet-side-by-side 错误:地图容器已经初始化。#35
- python - 如何使用 mysql 根据 django 中的整数字段将 x 个月添加到日期