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

Przywracanie sesji tmux po ponownym uruchomieniu

Czy jest jakiś sposób na zapisanie sesji tmux? Innymi słowy, czy jeśli zrestartuję komputer, to zawsze stracę sesje?

Odpowiedzi (5)

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

Tak, ponowne uruchomienie komputera spowoduje utratę sesji. Sesji nie można zapisać. Ale, mogą być oskryptowane. To, co większość robi w rzeczywistości, to skryptowanie niektórych sesji, abyś mógł je ponownie utworzyć. Na przykład, oto trywialny skrypt powłoki do tworzenia sesji:

#!/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

Oto co robi. Po pierwsze, sprawdza czy istnieje już jakaś sesja o tej nazwie (w tym przypadku, bardzo oryginalna nazwa to “script”) za pomocą tmux has-session. Następnie sprawdza kod zwrotny. Jeśli istnieje już trwająca sesja o tej nazwie, pomija cykl “if” i przechodzi od razu do ostatniej linii, gdzie dołącza się do sesji. W przeciwnym wypadku tworzy sesję i wysyła do niej jakieś klucze (na razie uruchamiamy losowy skrypt). Następnie wychodzi z bloku “if” i dołącza się.

To jest bardzo trywialna próbka. Możesz tworzyć wiele okien, paneli i tym podobnych przed dołączeniem.

To jednak nie będzie dokładnie to samo, o co prosiłeś. Jeśli dokonasz jakichkolwiek zmian w sesji, na przykład zmienisz nazwę okna i utworzysz w nim nowy panel, po ponownym uruchomieniu te zmiany oczywiście nie zostaną zapisane.

Istnieją pewne narzędzia, które ułatwiają proces skryptowania sesji, chociaż ja wolę robić rzeczy ręcznie (myślę, że jest to bardziej uniwersalne). Tymi narzędziami są Tmuxinator i Teamocil .

Moim głównym źródłem informacji była książka “The Pragmatic Bookshelf” o Tmuxie.

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

Napisałem prosty skrypt basha ](https://github.com/mislav/dotfiles/blob/d2af5900fce38238d1202aa43e7332b20add6205/bin/tmux-session) który zachowuje otwarte sesje tmuxa, okna i aktualne katalogi robocze w każdym z nich.

Wywołaj go tak ręcznie lub cyklicznie z crona (bo możesz zapomnieć):

tmux-session save

Zapisze się do ~/.tmux-session. Przywróć je po ponownym uruchomieniu tak:

tmux-session restore

Uważam to za dużo lepsze rozwiązanie niż kilkuset liniowy skrypt Perla.

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

tmuxinator ](https://github.com/tmuxinator/tmuxinator) jest narzędziem napisanym w Ruby, które może być użyte do tworzenia i zarządzania sesjami tmuxa z łatwością. Może być użyte do stworzenia projektu, który później może być zainicjowany jako sesja tmux.

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

Rozważ to częściowe rozwiązanie znalezione tutaj

Autor tworzy funkcję, która zapisuje historię sesji tmux w celu zachowania stanu sesji tmux po restarcie serwera.

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

Z powodzeniem używam https://github.com/jimeh/tmuxifier do odtwarzania sesji. Można to zainstalować bez ruby, po prostu używając git.

Próbki są całkiem zrozumiałe, np: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh