Sie können alternativ den Ruhezustand auf Festplatte
aktivieren
36
Der Ruhezustand ist eine Alternative dazu, den Computer ständig laufen zu lassen und nicht neu zu starten.
Chepner
5
@chepner: Es gibt jene Tage, an denen*** System restart required ***
Karatedog
2
@karatedog Ja, wir sind uns beide einig, dass der Ruhezustand keine Lösung ist, um Ihre tmux-Sitzung beim Neustart zu verlieren.
Chepner
Antworten:
170
Ja, wenn Sie Ihren Computer neu starten, gehen die Sitzungen verloren. Sitzungen können nicht gespeichert werden. Sie können jedoch mit Skripten versehen werden. Tatsächlich besteht das meiste darin, einige Sitzungen per Skript zu erstellen, damit Sie sie neu erstellen können. Hier ist zum Beispiel ein einfaches Shell-Skript zum Erstellen einer Sitzung:
Hier ist was es tut. Zuerst wird geprüft, ob es eine Sitzung mit diesem Namen gibt (in diesem Fall lautet der ursprüngliche Name "script"), die mit tmux has-session ausgeführt wird . Es überprüft den Rückkehrcode. Wenn es bereits eine laufende Sitzung mit diesem Namen gibt, überspringt sie den "Wenn" -Zyklus und wechselt direkt zur letzten Zeile, in der sie der Sitzung angehängt wird. Andernfalls wird eine Sitzung erstellt und einige Schlüssel an diese gesendet (derzeit wird nur ein zufälliges Skript ausgeführt). Dann wird der "if" -Block verlassen und angehängt.
Dies ist eine sehr triviale Stichprobe. Sie können vor dem Anhängen mehrere Fenster, Fensterbereiche und dergleichen erstellen.
Dies wird jedoch nicht genau das sein, wonach Sie gefragt haben. Wenn Sie Änderungen an der Sitzung vornehmen, beispielsweise ein Fenster umbenennen und ein neues Fenster erstellen, werden diese Änderungen beim Neustart natürlich nicht gespeichert.
Es gibt einige Tools, die das Erstellen von Skripten vereinfachen. Ich bevorzuge es jedoch, die Dinge manuell zu erledigen (ich denke, es ist vielseitiger). Diese Tools sind Tmuxinator und Teamocil .
Meine Hauptinformationsquelle war das Tmux-Buch "The Pragmatic Bookshelf".
klingt nicht so, wird nichts tun, wenn ich eine Sitzung mit 5 geöffneten Dateien wiederherstellen möchte. Keine Möglichkeit das zu tun?
Chovy
4
Tmux weiß nichts über den Status von Prozessen, die möglicherweise ausgeführt wurden. Sie können ein Skript mit denselben Dateien erstellen, indem Sie den Befehl 'send-keys' oder 'split-window' auf 'vim file1 file2 file3' setzen oder in die Sitzungsverwaltung Ihres Editors schauen (vim -S und dergleichen)
bloy
Was ist der Zweck der tmux send-keys ...Linie?
Dominykas Mostauskis
2
@DominykasMostauskis dieser Befehl sendet Tastendrücke an die angegebene Sitzung. Es ist so, als ob Sie die Sitzung betreten und genau diese Tasten über die Tastatur eingeben. In diesem Fall senden Sie "~ / bin / script" gefolgt von der Eingabetaste.
Dakatine
1
die Kombination some command; if [ $? != 0 ]; then .....ist einfach zu schreiben (und lesen) , wie: if ! some command; then ......
Ich habe ein tmux-Plugin geschrieben, mit dem Sie die gesamte tmux-Umgebung speichern und später wiederherstellen können. Es ist bestrebt, wirklich detailliert zu sein, damit Sie das Gefühl haben, nie aufhören zu müssen.
Update: Jetzt gibt es ein tmux-continuum- Plugin, das automatische Hintergrundspeicherungen der tmux-Umgebung durchführt. Optional wird auch * automatisch * tmux env nach dem Neustart des Computers wiederhergestellt.
Gerade als ich meine "Antwort" mit dem gleichen Link gepostet habe, habe ich nachgeschlagen - "do'h!" Fand dies beim Versuch, sich zu erinnern, wie Ihr Plugin genannt wurde.
Phatskat
Dieses Plugin ist nicht schlecht, hat aber nicht alle meine Programme wiederhergestellt. Lesen Sie mehr von Ihren Dokumenten und senden Sie möglicherweise eine Ausgabe auf github.
Arne
@Arne Je nach Programm ist möglicherweise eine Programmüberprüfung erforderlich. Stattdessen würde ich empfehlen, Ihre Programme für die Wiederherstellung zu konfigurieren - dauerhafte .vimrc-Dateien und Cursorpositionen für vim usw. - und den Befehl tmux pane_current_command für Programme wie man zu speichern, die erneut geöffnet werden können. Checkpointing ist meiner Meinung nach sehr kompliziert, aber auf jeden Fall einen Blick wert.
John P
@ bruno-sutic was ist der Unterschied zwischen deinem Plugin (tmux-resurrect) und tmux-coninuum?
tmuxinator ist ein in Ruby geschriebenes Tool, mit dem Sie mühelos tmux-Sitzungen erstellen und verwalten können. Es kann verwendet werden, um ein Projekt zu erstellen, das später als tmux-Sitzung instanziiert werden kann.
Betrachten Sie diese Teillösung, die Sie hier finden
Der Autor erstellt eine Funktion, die den Verlauf der tmux-Sitzung speichert, um den Status der tmux-Sitzung nach einem Neustart des Servers beizubehalten.
*** System restart required ***
Antworten:
Ja, wenn Sie Ihren Computer neu starten, gehen die Sitzungen verloren. Sitzungen können nicht gespeichert werden. Sie können jedoch mit Skripten versehen werden. Tatsächlich besteht das meiste darin, einige Sitzungen per Skript zu erstellen, damit Sie sie neu erstellen können. Hier ist zum Beispiel ein einfaches Shell-Skript zum Erstellen einer Sitzung:
Hier ist was es tut. Zuerst wird geprüft, ob es eine Sitzung mit diesem Namen gibt (in diesem Fall lautet der ursprüngliche Name "script"), die mit tmux has-session ausgeführt wird . Es überprüft den Rückkehrcode. Wenn es bereits eine laufende Sitzung mit diesem Namen gibt, überspringt sie den "Wenn" -Zyklus und wechselt direkt zur letzten Zeile, in der sie der Sitzung angehängt wird. Andernfalls wird eine Sitzung erstellt und einige Schlüssel an diese gesendet (derzeit wird nur ein zufälliges Skript ausgeführt). Dann wird der "if" -Block verlassen und angehängt.
Dies ist eine sehr triviale Stichprobe. Sie können vor dem Anhängen mehrere Fenster, Fensterbereiche und dergleichen erstellen.
Dies wird jedoch nicht genau das sein, wonach Sie gefragt haben. Wenn Sie Änderungen an der Sitzung vornehmen, beispielsweise ein Fenster umbenennen und ein neues Fenster erstellen, werden diese Änderungen beim Neustart natürlich nicht gespeichert.
Es gibt einige Tools, die das Erstellen von Skripten vereinfachen. Ich bevorzuge es jedoch, die Dinge manuell zu erledigen (ich denke, es ist vielseitiger). Diese Tools sind Tmuxinator und Teamocil .
Meine Hauptinformationsquelle war das Tmux-Buch "The Pragmatic Bookshelf".
quelle
tmux send-keys ...
Linie?some command; if [ $? != 0 ]; then .....
ist einfach zu schreiben (und lesen) , wie:if ! some command; then .....
.Ich habe ein einfaches Bash-Skript geschrieben , das geöffnete tmux-Sitzungen, Fenster und aktuelle Arbeitsverzeichnisse in jedem von ihnen beibehält.
Rufen Sie es wie folgt manuell oder periodisch von cron aus auf (weil Sie es vielleicht vergessen haben):
Es wird an schreiben
~/.tmux-session
. Stellen Sie sie nach dem Neustart wie folgt wieder her:Ich finde das viel besser als ein mehrere hundert Zeilen langes Perl-Skript.
quelle
Ich habe ein tmux-Plugin geschrieben, mit dem Sie die gesamte tmux-Umgebung speichern und später wiederherstellen können. Es ist bestrebt, wirklich detailliert zu sein, damit Sie das Gefühl haben, nie aufhören zu müssen.
https://github.com/tmux-plugins/tmux-resurrect
Update: Jetzt gibt es ein tmux-continuum- Plugin, das automatische Hintergrundspeicherungen der tmux-Umgebung durchführt. Optional wird auch * automatisch * tmux env nach dem Neustart des Computers wiederhergestellt.
quelle
tmuxinator ist ein in Ruby geschriebenes Tool, mit dem Sie mühelos tmux-Sitzungen erstellen und verwalten können. Es kann verwendet werden, um ein Projekt zu erstellen, das später als tmux-Sitzung instanziiert werden kann.
quelle
Betrachten Sie diese Teillösung, die Sie hier finden
Der Autor erstellt eine Funktion, die den Verlauf der tmux-Sitzung speichert, um den Status der tmux-Sitzung nach einem Neustart des Servers beizubehalten.
quelle
Ich verwende https://github.com/jimeh/tmuxifier erfolgreich zur Neuerstellung von Sitzungen. Dies kann ohne Rubin installiert werden, nur mit Git.
Beispiele sind ziemlich selbsterklärend, zB: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh
quelle