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

Herstel tmux sessie na reboot

Is er een manier om een tmux sessie op te slaan? Met andere woorden, als ik de computer opnieuw opstart, ben ik dan altijd de sessies kwijt?

Antwoorden (5)

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

Ja, als u uw computer opnieuw opstart, verliest u de sessies. Sessies kunnen niet worden opgeslagen. Maar ze kunnen wel gescript worden. Wat de meesten in feite doen is sommige sessies scripten zodat je ze opnieuw kunt maken. Bijvoorbeeld, hier is een triviaal shell script om een sessie te maken:

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

Dit is wat het doet. Eerst controleert het of er al een sessie is met die naam (in dit geval is de originele naam “script”) met tmux has-session. Het controleert de return code. Als er al een lopende sessie is met die naam, slaat hij de “if” cyclus over en gaat direct naar de laatste regel, waar hij aan de sessie koppelt. Anders maakt hij een sessie aan en stuurt er een aantal sleutels naar toe (hij voert nu gewoon een willekeurig script uit). Dan verlaat hij het “if” blok en maakt zich vast.

Dit is een zeer triviaal voorbeeld. Je kunt meerdere vensters, vensters en dergelijke maken voordat je vastmaakt.

Dit zal echter niet hetzelfde zijn als waar je om gevraagd hebt. Als je veranderingen aanbrengt in de sessie, bijvoorbeeld je hernoemt een venster en maakt er een nieuw deelvenster in, als je opnieuw opstart worden die veranderingen natuurlijk niet opgeslagen.

Er zijn enkele gereedschappen die het proces van sessies scripten vergemakkelijken, hoewel ik er de voorkeur aan geef om dingen handmatig te doen (ik denk dat het veelzijdiger is). Die gereedschappen zijn Tmuxinator en Teamocil .

Mijn belangrijkste bron van informatie was “The Pragmatic Bookshelf” Tmux boek.

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

Ik schreef een eenvoudig bash script] (https://github.com/mislav/dotfiles/blob/d2af5900fce38238d1202aa43e7332b20add6205/bin/tmux-session) dat geopende tmux sessies, vensters en huidige werkdirectories in elk houdt.

Roep het zo handmatig aan of periodiek vanuit cron (omdat je het misschien vergeet):

tmux-session save

Het zal schrijven naar ~/.tmux-session. Herstel ze na een reboot als volgt:

tmux-session restore

Ik vind dit veel beter dan een paar honderd regels lang Perl script.

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

tmuxinator ](https://github.com/tmuxinator/tmuxinator) is een tool geschreven in Ruby, dat gebruikt kan worden om eenvoudig tmux-sessies te maken en te beheren. Het kan worden gebruikt om een project te creëren, dat later kan worden geïnstantieerd als tmux-sessie.

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

Overweeg deze gedeeltelijke oplossing die hier

De auteur creëert een functie die de geschiedenis van de tmux sessie opslaat om de toestand van de tmux sessie te bewaren na een server reboot.

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

Ik gebruik met succes https://github.com/jimeh/tmuxifier voor het opnieuw creëren van sessies. Dit kan geïnstalleerd worden zonder ruby, gewoon met git.

De voorbeelden spreken voor zich, bijv: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh