Как получить доступ к сеансу tmux после того, как я его покину?

19

Я использую tmux на EC2 AWS, но я хочу увидеть, что происходит в одной сессии, которую я создал.

Я использую Ctrl+, bа затем d покинуть сессию.

Использование Ubuntu 16.04

Витор Абелла
источник
2
Ты пробовал tmux attach?
Стивен
после использования tmux или при первом его использовании?
Витор Абелла
Обычно вы пользуетесь tmux, делаете что-то, а затем отсоединяетесь. Затем вы используете tmux attach, чтобы вернуться к предыдущему сеансу.
Стивен

Ответы:

23

Я хочу увидеть, что происходит в одной сессии, которую я создал.

Насколько я знаю, вы можете просмотреть свой список сеансов 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 - номер окна, в которое вы перемещаетесь).

Формат Номера n1 и n2 упорядочены / отформатированы как 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]

Теперь, переместив окно «Чат» из первого сеанса в мой второй сеанс, мне нужно будет запустить 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

что просто неприемлемо, но если вам нужно увидеть больше информации, чтобы вы могли знать, какая панель вам действительно нужна, вы можете сделать

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

который будет отображать текущие команды на каждой панели.

В моем случае

vim
zsh
python (sadly it's runnuning `ranger`)

Поэтому после определения того, какую панель вы хотите (скажем, vim), вам нужно переместить ее.

tmux move-pane -s 0:1.1 -t 1:1.2перейти к конкретной панели в этом случае 2

Если у вас есть только одна панель в целевом окне, вы не можете tmux move-pane -s 0:1.1 -t 1:1.выбрать целевую панель, и она все равно будет работать.

Я надеюсь, что это отвечает на вопрос.

ArchNoob
источник
0

Следуя ответу выше, вы можете попробовать:

tmux lsчтобы получить номер сеанса. А потом

tmux attach-session -t <session_number>

Закс
источник