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

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

1
задан KendallB
08.03.2023 2:43 Количество просмотров материала 2769
Распечатать страницу

5 ответов

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

#!/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 " и подключается.

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

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

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

моим главным источником информации была "прагматическая Книжная полка" Книга Tmux.

146
отвечен Dakatine 2023-03-09 10:31

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

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

tmux-session save

Он будет писать ~/.tmux-session. Восстановите их после перезагрузки следующим образом:

tmux-session restore

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

106
отвечен mislav 2023-03-09 12:48

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

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

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

71
отвечен Bruno Sutic 2023-03-09 15:05

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

10
отвечен Praveen Kumar 2023-03-09 17:22

рассмотрим это частичное решение найдено здесь

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

5
отвечен greg 2023-03-09 19:39

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх