Спящий режим - это альтернатива постоянному включению компьютера, а не перезагрузке.
chepner
5
@chepner: Есть те дни, когда*** System restart required ***
karatedog
2
@karatedog Да, поэтому мы оба согласны с тем, что гибернация не является решением проблемы потери сеанса tmux при перезагрузке.
chepner
Ответы:
170
Да, если вы перезагрузите компьютер, вы потеряете сессии. Сессии не могут быть сохранены. Но они могут быть написаны по сценарию. На самом деле большинство из них - это сценарий некоторых сессий, чтобы вы могли их заново создать. Например, вот тривиальный сценарий оболочки для создания сеанса:
Вот что он делает. Во-первых, он проверяет, существует ли уже сессия с таким именем (в данном случае, очень оригинальное имя «script») с помощью tmux has-session . Проверяет код возврата. Если с таким именем уже есть текущий сеанс, он пропускает цикл «если» и переходит прямо к последней строке, где он присоединяется к сеансу. В противном случае он создает сеанс и отправляет ему несколько ключей (пока просто запускает случайный скрипт). Затем он выходит из блока «if» и присоединяется.
Это очень тривиальный образец. Вы можете создать несколько окон, панелей и т.п. перед тем, как прикрепить.
Это будет не то же самое, о чем вы просили. Если вы вносите какие-либо изменения в сеанс, например, вы переименовываете окно и создаете в нем новую панель, если вы перезагрузите эти изменения, конечно, не будут сохранены.
Есть некоторые инструменты, которые облегчают процесс создания сценариев, хотя я предпочитаю делать что-то вручную (я думаю, это более универсально). Это инструменты Tmuxinator и Teamocil .
Моим основным источником информации была книга Tmux "The Pragmatic Bookshelf".
Похоже, это ничего не сделает, если я хочу восстановить сеанс с 5 открытыми файлами. Нет способа сделать это?
Чови
4
Tmux ничего не знает о состоянии процессов, которые вы могли выполнять. Вы можете написать сценарий с открытыми теми же файлами, используя команду 'send-keys' или 'split-window', например, 'vim file1 file2 file3', или загляните в систему управления сеансами вашего редактора (vim -S и т.п.)
bloy
Какова цель tmux send-keys ...линии?
Доминикас Мостаускис
2
@DominykasMostauskis эта команда отправляет нажатия клавиш в указанный сеанс. Это похоже на вход в сессию и ввод этих клавиш с клавиатуры. В этом случае вы отправляете «~ / bin / script», а затем «Enter».
Дакатин
1
сочетание some command; if [ $? != 0 ]; then .....более легко писать (и читать) , как: if ! some command; then ......
Я написал плагин tmux, который позволит вам сохранить полную среду tmux и восстановить ее позже. Он стремится быть очень подробным, чтобы у вас было ощущение, что вы никогда не бросаете tmux.
Обновление: теперь есть плагин tmux- Continum, который выполняет автоматическое сохранение в фоновом режиме среды tmux. При желании он также * автоматически * восстанавливает tmux env после перезагрузки компьютера.
Так же, как я отправил свой «ответ» с той же ссылкой, я посмотрел вверх - «do'h!» Нашел это, пытаясь вспомнить, как назывался твой плагин.
phatskat
Этот плагин неплох, но он не восстановил все мои программы. Будет читать больше ваших документов и, возможно, представить вопрос на GitHub.
Арне
@Arne В зависимости от программы, это может потребовать контрольной точки программы. Вместо этого я бы порекомендовал сконфигурировать ваши программы для восстановления - постоянные файлы .vimrc и позиции курсора для vim и т. Д. - и сохранить команду tmux pane_current_command для таких программ, как man, которые можно открыть заново. На мой взгляд, контрольно-пропускные пункты очень сложны, но в любом случае их стоит рассмотреть.
Джон П
@ bruno-sutic Какая разница между вашим плагином (tmux-resurrect) и tmux-coninuum?
tmuxinator - это инструмент, написанный на Ruby, который можно легко использовать для создания и управления сессиями tmux. Его можно использовать для создания проекта, который позже можно создать как сеанс tmux.
*** System restart required ***
Ответы:
Да, если вы перезагрузите компьютер, вы потеряете сессии. Сессии не могут быть сохранены. Но они могут быть написаны по сценарию. На самом деле большинство из них - это сценарий некоторых сессий, чтобы вы могли их заново создать. Например, вот тривиальный сценарий оболочки для создания сеанса:
Вот что он делает. Во-первых, он проверяет, существует ли уже сессия с таким именем (в данном случае, очень оригинальное имя «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
. Восстановите их после перезагрузки так:Я нахожу это намного лучше, чем несколько сотен строк 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
источник