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

tmux-Sitzung nach Neustart wiederherstellen

Gibt es eine Möglichkeit, eine tmux-Sitzung zu speichern? Mit anderen Worten, wenn ich den Computer neu starte, verliere ich dann immer die Sitzungen?

Antworten (5)

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

Ja, wenn Sie Ihren Computer neu starten, verlieren Sie die Sitzungen. Sitzungen können nicht gespeichert werden. Aber sie können geskriptet werden. Was die meisten tun, ist, einige Sitzungen zu skripten, damit Sie sie neu erstellen können. Hier ist zum Beispiel ein triviales Shell-Skript, um eine Sitzung zu erstellen:

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

Hier ist, was es tut. Zuerst prüft es mit tmux has-session, ob es bereits eine Sitzung mit diesem Namen gibt (in diesem Fall ist der ursprüngliche Name “script”). Es prüft den Rückgabewert. Wenn es bereits eine laufende Sitzung mit diesem Namen gibt, überspringt es den “if”-Zyklus und geht direkt zur letzten Zeile, wo es sich mit der Sitzung verbindet. Andernfalls erstellt es eine Sitzung und sendet einige Schlüssel an sie (es führt nur ein zufälliges Skript aus). Dann verlässt es den “if”-Block und hängt sich an.

Dies ist ein sehr triviales Beispiel. Sie können mehrere Fenster, Fensterbereiche und ähnliches erstellen, bevor Sie anhängen.

Dies ist jedoch nicht genau das, was Sie wollten. Wenn Sie irgendwelche Änderungen an der Sitzung vornehmen, z. B. ein Fenster umbenennen und ein neues Fenster darin erstellen, werden diese Änderungen bei einem Neustart natürlich nicht gespeichert.

Es gibt einige Tools, die das Skripten von Sitzungen erleichtern, obwohl ich es vorziehe, die Dinge manuell zu erledigen (ich denke, es ist vielseitiger). Diese Werkzeuge sind Tmuxinator und Teamocil .

Meine Hauptinformationsquelle war das Tmux-Buch “The Pragmatic Bookshelf”.

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

Ich habe ein einfaches Bash-Skript geschrieben , das offene tmux-Sitzungen, Fenster und aktuelle Arbeitsverzeichnisse in jedem persistiert.

Rufen Sie es wie folgt manuell oder periodisch von cron aus auf (weil Sie es vielleicht vergessen):

tmux-session save

Es schreibt nach ~/.tmux-session. Stellen Sie sie nach dem Neustart wie folgt wieder her:

tmux-session restore

Ich finde das viel besser als ein mehrere hundert Zeilen langes Perl-Skript.

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

tmuxinator ist ein in Ruby geschriebenes Tool, mit dem sich tmux-Sessions einfach erstellen und verwalten lassen. Es kann verwendet werden, um ein Projekt zu erstellen, das später als tmux-Sitzung instanziiert werden kann.

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

Betrachten Sie diese Teillösung, die Sie hier

gefunden haben. Der Autor erstellt eine Funktion, die den Verlauf der tmux-Sitzung speichert, um den Zustand der tmux-Sitzung nach einem Server-Neustart zu erhalten.

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

Ich verwende erfolgreich https://github.com/jimeh/tmuxifier zur Wiederherstellung von Sitzungen. Dies kann ohne Ruby installiert werden, nur mit Git.

Beispiele sind ziemlich selbsterklärend, z.B.: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh