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?
Czy jest jakiś sposób na zapisanie sesji tmux? Innymi słowy, czy jeśli zrestartuję komputer, to zawsze stracę sesje?
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.
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.
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.
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