Могу ли я увидеть, что происходит в сеансе tmux, не подключаясь к нему?

Могу ли я увидеть, что происходит в сеансе tmux, не подключаясь к нему?

Часто я использую tmuxдля запуска задачи, которая будет выполняться некоторое время. Я периодически возвращаюсь и проверяю ее, используя, tmux -aа затем отключаюсь, если она все еще не завершена, и проверяю снова позже.

Есть ли способ просто увидеть краткий снимок того, что происходит в сеансе без полного присоединения? Я ищу что-то вроде того, что теоретически можно сделать tailв сеансе, чтобы получить последний бит вывода (но если я могу избежать создания другого файла с копией вывода, тем лучше)

Может быть, присоединение и немедленное отсоединение также сработает. Я пытаюсь сэкономить нажатия клавиш, возможно, такую ​​команду можно выполнить удаленно,
т. е ssh root@server tmux --tail. ?

решение1

Я думаю, capture-paneвам подойдет:

tmux capture-pane -pt "$target-pane"

(см. «target-pane» на странице руководства для получения информации о способах указания панели)

По умолчанию эта команда выведет текущее содержимое указанной панели. Вы можете указать диапазон строк, используя параметры -Sи -E(номера начальной и конечной строк): первая строка — 0, а отрицательные числа относятся к строкам из истории «прокрутки назад» панели. Таким образом, добавление -S -10дает вам последние десять строк истории плюс текущее содержимое панели.

tmux capture-pane -pt "$target-pane" -S -10

Эта -pопция была добавлена ​​в версии 1.8. Если вы используете более раннюю версию, то вы можете сделать это:

tmux capture-pane -t "$target_pane" \; save-buffer - \; delete-buffer

Но помните об этих точках с запятой, если вы вводите эту команду через , sshтак как удаленная оболочка добавит дополнительный уровень интерпретации оболочки (точки с запятой должны быть переданы в качестве аргументов в конечныйtmuxкоманды, они не должны интерпретироваться ни локальной, ни удаленной оболочкой).

решение2

Не совсем. Один из подходов, который приходит на ум, — это запустить свой долго работающий процесс ( $lrp), а затем периодически, без повторного присоединения, запускать его list-windowsдля соответствующего сеанса.

В какой-то момент имя окна tmux с $lrp изменится обратно на имя по умолчанию, как правило, на вашу оболочку, и вы сможете увидеть, что $lrp завершился.

┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1  (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH  (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC  (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: $lrp* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)
┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1  (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH  (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC  (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: bash* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)

Связанный контент