Как нацелиться на конкретную сессию tmux - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть скрипт, который использует 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, вы можете ясно видеть, что в нем отображаются окна из сеанса 1 вместо сеанса 2.

Есть ли способ с Tmux просто перечислить окна из определенного сеанса из за пределами Tmux? Это буквально решило бы все мои проблемы, с которыми я сталкивался в течение достаточно долгого времени.

1 Ответ

1 голос
/ 07 ноября 2019

Да, вы можете указать конкретный сеанс для большинства команд tmux.

tmux list-windows -t session2

-t - это способ подключения к определенному сеансу (tmux a -t session1) или даже к определенному сеансу /комбинация окна / панели.

Например, если у меня есть сеанс sess, который имеет 3 окна, каждое с 4 панелями, и я хочу запустить htop в первом окне, на третьей панели яделали

tmux send-keys -t sess:0.2 'htop' Enter

, поскольку окна / панели в tmux индексируются 0

...