DevBug blog

О Linux, Java, разработке ПО и не только

Как сохранять сессии tmux между перезагрузками

2026-08-27 Linux

По умолчанию сессии 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, не полагаясь только на таймер.

Ссылки

comments powered by Disqus