Есть ли способ сохранить сеанс tmux? Другими словами, если я перезагружу компьютер, я всегда буду терять сессии?
*** System restart required ***
Есть ли способ сохранить сеанс tmux? Другими словами, если я перезагружу компьютер, я всегда буду терять сессии?
*** System restart required ***
Ответы:
Да, если вы перезагрузите компьютер, вы потеряете сессии. Сессии не могут быть сохранены. Но они могут быть написаны по сценарию. На самом деле большинство из них - это сценарий некоторых сессий, чтобы вы могли их заново создать. Например, вот тривиальный сценарий оболочки для создания сеанса:
#!/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
Вот что он делает. Во-первых, он проверяет, существует ли уже сессия с таким именем (в данном случае, очень оригинальное имя «script») с помощью tmux has-session . Проверяет код возврата. Если с таким именем уже есть текущий сеанс, он пропускает цикл «если» и переходит прямо к последней строке, где он присоединяется к сеансу. В противном случае он создает сеанс и отправляет ему несколько ключей (пока просто запускает случайный скрипт). Затем он выходит из блока «if» и присоединяется.
Это очень тривиальный образец. Вы можете создать несколько окон, панелей и т.п. перед тем, как прикрепить.
Это будет не то же самое, о чем вы просили. Если вы вносите какие-либо изменения в сеанс, например, вы переименовываете окно и создаете в нем новую панель, если вы перезагрузите эти изменения, конечно, не будут сохранены.
Есть некоторые инструменты, которые облегчают процесс создания сценариев, хотя я предпочитаю делать что-то вручную (я думаю, это более универсально). Это инструменты Tmuxinator и Teamocil .
Моим основным источником информации была книга Tmux "The Pragmatic Bookshelf".
tmux send-keys ...
линии?
some command; if [ $? != 0 ]; then .....
более легко писать (и читать) , как: if ! some command; then .....
.
Я написал простой скрипт bash, который сохраняет открытые сессии tmux, окна и текущие рабочие каталоги в каждой.
Называйте это так вручную или периодически из cron (потому что вы можете забыть):
tmux-session save
Это напишет ~/.tmux-session
. Восстановите их после перезагрузки так:
tmux-session restore
Я нахожу это намного лучше, чем несколько сотен строк Perl-скрипта.
Я написал плагин tmux, который позволит вам сохранить полную среду tmux и восстановить ее позже. Он стремится быть очень подробным, чтобы у вас было ощущение, что вы никогда не бросаете tmux.
https://github.com/tmux-plugins/tmux-resurrect
Обновление: теперь есть плагин tmux- Continum, который выполняет автоматическое сохранение в фоновом режиме среды tmux. При желании он также * автоматически * восстанавливает tmux env после перезагрузки компьютера.
tmuxinator - это инструмент, написанный на Ruby, который можно легко использовать для создания и управления сессиями tmux. Его можно использовать для создания проекта, который позже можно создать как сеанс tmux.
Рассмотрим это частичное решение, найденное здесь
Автор создает функцию, которая сохраняет историю сеанса tmux, чтобы сохранить состояние сеанса tmux после перезагрузки сервера.
Я успешно использую https://github.com/jimeh/tmuxifier для воссоздания сессий. Это можно установить без ruby, просто используя git.
Образцы довольно понятны, например: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh