2012-06-21 04:17:49 +0000 2012-06-21 04:17:49 +0000
277
277

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

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

Ответы (5)

176
176
176
2012-06-22 08:58:34 +0000

Да, если вы перезагрузите компьютер, вы проиграете сеансы. Сессии не могут быть сохранены. Но, они могут быть написаны по сценарию. То, что большинство из них делает на самом деле, это 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”.

122
122
122
2013-07-04 22:37:01 +0000

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

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

tmux-session save

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

tmux-session restore

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

10
10
10
2014-06-26 17:40:29 +0000

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

5
5
5
2013-02-02 21:54:54 +0000

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

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

1
1
1
2019-05-03 08:24:08 +0000

Я успешно использую https://github.com/jimeh/tmuxifier для воссоздания сессий. Это можно установить без рубина, просто используя git.

Samples довольно самообъясняющие, например: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh