Вопрос Восстановить сеанс tmux после перезагрузки


Есть ли способ сохранить сеанс tmux? Другими словами, если я перезагружу компьютер, я всегда потеряю сеансы?


212
2018-06-21 04:17


происхождения


Вы можете спящий режим на диск в качестве альтернативы - Mâtt Frëëman
Спящий режим - альтернатива тому, что ваш компьютер работает постоянно, а не перезагружается. - chepner
@chepner: Есть те дни, когда *** System restart required *** - karatedog
@karatedog Да, поэтому мы оба согласны с тем, что спящий режим не является решением для потери сеанса tmux при перезагрузке. - chepner


ответы:


Да, если вы перезагрузите компьютер, вы потеряете сеансы. Сессии не могут быть сохранены. Но они могут быть написаны сценарием. На самом деле, скрипт некоторые сеансы, чтобы вы могли их воссоздать. Например, вот тривиальный сценарий оболочки для создания сеанса:

#!/bin/zsh                                                                                                   

SESSIONNAME="script"
tmux has-session -t $SESSIONNAME &> /dev/null

if [ $? != 0 ] 
 then
    tmux new-session -s $SESSIONNAME -n script -d
    tmux send-keys -t $SESSIONNAME "~/bin/script" C-m 
fi

tmux attach -t $SESSIONNAME

Вот что он делает. Во-первых, он проверяет, существует ли уже какой-либо сеанс с этим именем (в этом случае самым оригинальным именем является «скрипт») с tmux has-session, Он проверяет код возврата. Если уже существует сеанс с этим именем, он пропускает цикл «if» и переходит прямо к последней строке, где он присоединяется к сеансу. В противном случае он создает сеанс и отправляет ему некоторые ключи (на данный момент выполняется только случайный скрипт). Затем он выходит из блока «if» и присоединяется.

Это очень тривиальный образец. Вы можете создавать несколько окон, панелей и т. Д., Прежде чем присоединяться.

Это будет не быть тем же самым, о чем вы просили. Если вы внесете какие-либо изменения в сеанс, например, вы переименуете окно и создадите в нем новую панель, если вы перезагрузите эти изменения, это, конечно, не будет сохранено.

Есть некоторые инструменты, которые облегчают процесс сеансов сценариев, хотя я предпочитаю делать что-то вручную (я думаю, что он более универсален). Эти инструменты Tmuxinator а также Teamocil,

Моим основным источником информации была книга «Прагматическая книжная полка» Tmux.


140
2018-06-22 08:58



похоже, что ничего не сделает, если я хочу восстановить сеанс с открытыми 5 файлами. Нет способа сделать это? - chovy
Tmux ничего не знает о состоянии процессов, которые вы, возможно, выполняли. Вы можете одна и та же файлы, открытые с помощью команды «send-keys» или «split-window», являются «vim file1 file2 file3» или смотрите управление сеансом вашего редактора (vim -S и тому подобное) - bloy
Какова цель tmux send-keys ... линия? - Dominykas Mostauskis
@DominykasMostauskis, что команда посылает нажатие клавиши на указанный сеанс. Это похоже на ввод сеанса и ввод этих самых клавиш с клавиатуры. В этом случае вы отправляете «~ / bin / script», а затем Enter. - Dakatine
могу ли я запустить скрипт ssh с именем пользователя и пройти? (Я знаю, что он не защищен, просто хочу знать, возможно ли его для систем, где я не забочусь о безопасности, но все равно должен иметь пользователя и пройти). - Jas


Я написал простой сценарий bash который сохраняет открытые сеансы tmux, окна и текущие рабочие каталоги в каждом.

Назовите его так вручную или периодически из cron (потому что вы можете забыть):

tmux-session save

Он напишет ~/.tmux-session, Восстановите их после перезагрузки так:

tmux-session restore

Я нахожу это намного лучше, чем несколько сотен строк Perl-скрипта.


100
2017-07-04 22:37





Я написал плагин tmux, который позволяет вам сохранить полную среду tmux и восстановить ее позже. Он стремится быть очень подробным, чтобы у вас было ощущение, что вы никогда не покидаете tmux.

https://github.com/tmux-plugins/tmux-resurrect

Обновление: теперь есть tmux-континуум плагин, который выполняет автоматическое сохранение фона в среде tmux. При желании это также автоматически * восстанавливает tmux env после перезагрузки компьютера.


66
2017-08-30 09:16



Так же, как я отправил свой «ответ» с той же ссылкой, я поднял глаза - «do'h!» Нашел это, пытаясь вспомнить, как был вызван ваш плагин. - phatskat
Этот плагин неплох, но он не восстановил все мои программы. Прочитайте больше своих документов и, возможно, отправьте вопрос на github. - Arne
@Arne В зависимости от программы для этого может потребоваться контрольная точка программы. Вместо этого я бы рекомендовал настроить ваши программы на восстановление - постоянные .vimrc-файлы и позиции курсора для vim и т. Д. - и сохранить команду tmux pane_current_command для таких программ, как человек, который может быть снова открыт. На мой взгляд, контрольная точка очень сложная, но стоит посмотреть в любом случае. - John P
@ bruno-sutic, каково различие между вашим плагином (tmux-resurrect) и tmux-coninuum? - lony


tmuxinator это инструмент, написанный на Ruby, который можно использовать для создания и управления сеансами tmux с легкостью. Он может использоваться для создания проекта, который впоследствии может быть создан как сеанс tmux.


10
2018-06-26 17:40





Рассмотрим это частичное решение Вот

Автор создает функцию, которая сохраняет историю сеанса tmux, чтобы сохранить состояние сеанса tmux после перезагрузки сервера.


5
2018-02-02 21:54



Не могли бы вы опубликовать то, что они говорят? Ссылки могут гнить. - cpast
@cpast: Это правда, но комментарии могут также гнить. Лучше всего дать оба :) - danielpops