Как сохранять сессии tmux между перезагрузками
По умолчанию сессии tmux живут ровно столько, сколько работает сервер tmux. Перезагрузка машины, убитый сервер или его падение — и все окна, панели и раскладка пропадают безвозвратно. tmux-resurrect и tmux-continuum решают эту проблему: сохраняют состояние сессии на диск и восстанавливают его автоматически.
Устанавливаем TPM (Tmux Plugin Manager)
Если TPM ещё не установлен:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Убедитесь, что в самом конце ~/.tmux.conf есть строка:
run '~/.tmux/plugins/tpm/tpm'
Добавляем tmux-resurrect и tmux-continuum
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'
tmux-resurrectотвечает непосредственно за сохранение и восстановление.tmux-continuumавтоматизирует процесс — периодически сохраняет состояние в фоне и восстанавливает его сразу при запуске tmux.
Перезагружаем конфиг и ставим плагины
Перезагружаем конфигурацию:
tmux source-file ~/.tmux.conf
Затем ставим новые плагины прямо из tmux: prefix + I (заглавная i). TPM склонирует оба репозитория в ~/.tmux/plugins/.
Сохранение и восстановление вручную
Даже с работающим continuum полезно знать штатные сочетания клавиш:
prefix + Ctrl-s— сохранить текущее состояние сессииprefix + Ctrl-r— восстановить последнее сохранённое состояние
Где хранятся сессии
Сохранённое состояние лежит в ~/.tmux/resurrect/ в виде файлов с меткой времени, например tmux_resurrect_2026-08-27T10-15-00.txt, а символическая ссылка last всегда указывает на самый свежий снапшот:
ls -la ~/.tmux/resurrect/
Восстанавливаем и сессии vim/neovim
По умолчанию resurrect просто перезапускает программы, но не их внутреннее состояние. Чтобы он открывал именно сохранённую сессию vim/nvim (буферы, сплиты), а не просто запускал редактор заново:
set -g @resurrect-strategy-vim 'session'
set -g @resurrect-strategy-nvim 'session'
Для этого на стороне редактора нужен плагин для сессий (например, tpope/vim-obsession для Vim или rmagatti/auto-session для Neovim), который реально пишет файл сессии, откуда resurrect потом всё восстановит.
Важно
- Автовосстановление continuum срабатывает только тогда, когда tmux запускается без уже открытых сессий — существующую сессию оно не тронет.
- Интервал сохранения по умолчанию — 15 минут, меняется через
@continuum-save-interval(в минутах). - Хорошо сочетается с
set -g detach-on-destroy off— тогда панели переживают убийство сессии, а не весь сервер целиком. - Continuum не сохраняет то, что не может разумно восстановить: история шелла и переменные окружения внутри панели в снапшот не попадают, только рабочая директория и запущенная команда.
- Перед чем-то рискованным (перезагрузка, обновление ядра) лучше сохраниться вручную через
prefix + Ctrl-s, не полагаясь только на таймер.