есть ли способ сохранить сеанс tmux? Другими словами, если я перезагружу компьютер, я всегда буду терять сеансы?
Восстановление сессии tmux после перезагрузки
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.
Я написал простой скрипт bash, который сохраняет открытые сеансы tmux, окна и текущие рабочие каталоги в каждом.
назовите это так вручную или периодически из cron (потому что вы можете забыть):
tmux-session save
Он будет писать ~/.tmux-session
. Восстановите их после перезагрузки следующим образом:
tmux-session restore
Я нахожу это намного лучше, чем несколько сотен строк сценария Perl.
Я написал плагин tmux, который позволяет сохранить полную среду tmux и восстановить ее позже. Он стремится быть действительно подробным, чтобы у вас было ощущение, что вы никогда не выйдете из tmux.
https://github.com/tmux-plugins/tmux-resurrect
Update: теперь есть tmux-continuum плагин, который выполняет автоматическое сохранение фона среды tmux. Дополнительно *автоматически * восстанавливает tmux env после перезагрузки компьютера.
tmuxinator это инструмент, написанный на Ruby, который может быть использован для создания и управления сеансами tmux с легкостью. Он может быть использован для создания проекта, который позже может быть создан как сеанс tmux.
рассмотрим это частичное решение найдено здесь
автор создает функцию, которая сохраняет историю сеанса tmux, чтобы сохранить состояние сеанса tmux после перезагрузки сервера.
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]