Восстановление сессии tmux после перезагрузки
Есть ли способ спасти сеанс tmux? Другими словами, если я перезагружу компьютер, я всегда буду проигрывать сессии?
Есть ли способ спасти сеанс tmux? Другими словами, если я перезагружу компьютер, я всегда буду проигрывать сессии?
Да, если вы перезагрузите компьютер, вы проиграете сеансы. Сессии не могут быть сохранены. Но, они могут быть написаны по сценарию. То, что большинство из них делает на самом деле, это script некоторые сессии, так что вы можете создавать их заново. Например, вот тривиальный сценарий оболочки для создания сессии:
#!/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” и переходит прямо к последней строке, где он присоединяется к сессии. В противном случае, он создает сессию и посылает некоторые ключи к нему (просто запустить случайный скрипт на данный момент). Затем он выходит из блока “если” и присоединяется.
Это **очень тривиальный образец. Вы можете создать несколько окон, панелей и тому подобное перед тем, как прикрепить.
Это будет not то же самое, что вы просили. Если вы сделаете какие-либо изменения в сессии, например, переименуете окно и создадите в нем новую панель, то при перезагрузке эти изменения, конечно же, не будут сохранены.
Есть некоторые инструменты, которые облегчают процесс написания сценариев сессий, хотя я предпочитаю делать вещи вручную (я думаю, что это более универсально). Это Tmuxinator и Teamocil .
Моим основным источником информации была книга Tmux “The Pragmatic Bookshelf”.
Я написал простой бэш-скрипт , в котором сохраняются открытые сессии tmux, окна и текущие рабочие директории в каждой из них.
Вызовите его так вручную или периодически из cron (потому что вы можете забыть):
tmux-session save
Он будет писать на ~/.tmux-session
. Восстанавливайте их после перезагрузки:
tmux-session restore
Я нахожу это намного лучше, чем несколько сотен строк Perl скрипта.
tmuxinator - это инструмент, написанный на Ruby, который можно использовать для создания и управления сеансами tmux с легкостью. Его можно использовать для создания проекта, который позже может быть инстанцирован как сессия tmux.
Я успешно использую https://github.com/jimeh/tmuxifier для воссоздания сессий. Это можно установить без рубина, просто используя git.
Samples довольно самообъясняющие, например: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh