Ihre Konfigurationsdatei funktioniert, es gibt jedoch einige Komplikationen.
Kurzzeitige Befehle
Erstens werden die von Ihnen gestarteten Befehle ( ls- Instanzen ) sehr schnell ausgeführt. Die Fenster und Fensterbereiche für die Befehle werden erstellt, verschwinden jedoch, sobald jeder Befehl beendet wird.
Wenn es Ihr Ziel ist, solche "One Shot" -Befehle tatsächlich in Ihrer endgültigen Konfiguration zu verwenden, sollten Sie wahrscheinlich die Fensteroption verwenden remain-on-exit
(und möglicherweise die Sitzungsoption set-remain-on-exit
, um einen Standard für alle in der Sitzung erstellten Fenster bereitzustellen). Wenn remain-on-exit
für ein Fenster festgelegt ist, wird es beim Beenden des Befehls nicht ausgeblendet. Möglicherweise möchten Sie die respawn-window
einem Schlüssel zuordnen (Hinweis: respawn-window
Der ursprüngliche Befehl wird neu erzeugt; respawn-pane
ist auch in tmux 1.5 verfügbar, um einzelne Fenster neu zu erzeugen ).
bind-key R respawn-window
# set global r-o-e so that initial window of initial session gets it
set -g set-remain-on-exit on
# create a session and its windows/panes
new -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# restore global r-o-e
set -g set-remain-on-exit off
# let session r-o-e inherit from global value for future windows
set -u set-remain-on-exit
Oder, wenn es Ihnen nichts ausmacht, wenn Ihr Anfangsfenster die Nummer 1 anstelle der Nummer 0 ist, können wir vermeiden, den globalen Wert zu ändern:
bind-key R respawn-window
# create a session with a throw-away window
new true
# for future windows, stay open after the command exits
set set-remain-on-exit on
# create the windows we really want
neww -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# for future windows, revert r-o-e to global value
set -u set-remain-on-exit
Wenn Sie nur ls
einen vereinfachten Platzhalterbefehl verwenden und tatsächlich beabsichtigen, einen interaktiven Befehl in Ihren Fenstern / Fenstern zu erzeugen, sollten Sie wahrscheinlich nur den Befehl erzeugen, den Sie später ausführen möchten. Wenn der gewünschte Befehl zu lange dauert es bis zur Inbetriebnahme während verwendet tmux Tests ersetzen dann eine Shell oder andere einfachen interaktiven Befehl (zB top
, sqlite3
usw.).
new-session
Ist der Standardbefehl
Zweitens ist das Ausführen von tmux ohne ein Befehlsargument (z. B. tmux
) gleichbedeutend mit dem Verwenden des new-session
Befehls (dh tmux
dasselbe wie tmux new-session
). Sie .tmux.conf
erstellen eine Sitzung für ihre Fenster / Fensterbereiche ( new
ist ein Alias für new-session
) und eine andere Sitzung wird für den impliziten new-session
Befehl erstellt, der durch Starten von tmux ohne Befehlsargument angegeben wird . Wenn Sie die Standardstatusleiste verwenden, wird [1]
links in der Statusleiste ein angezeigt, wenn Sie sich in der zusätzlichen Sitzung befinden (die erste Sitzung, die in erstellt wurde, .tmux.conf
ist die Nummer 0).
Wenn Sie das Erstellen der zusätzlichen Sitzung vermeiden möchten, verwenden Sie tmux attach
statt plain tmux
. Die Befehle von Ihrem .tmux.conf
werden ausgeführt und erstellen Sitzung 0, und dann wird Ihr Client an diese Sitzung angefügt, anstatt eine neue zu erstellen.
splitw
- sonst nichts - enthält, und ich bekomme immer noch keinen geteilten Bildschirm, weil er es sagt Die aktuelle Sitzung kann nicht hergestellt werden. Wenn ichnew
davor hinzufüge , bekomme ich ... ein Fenster, eine Scheibe. Ich kann nicht scheinen, damit das Leben von mir zwei Scheiben beim Start erhält.new
,splitw
funktioniert dann bei mir, wenn ich tmux über startetmux attach
. Beachten Sie, dass die.tmux.conf
(oder die mit der-f
Option angegebene) Datei nur verwendet wird, wenn noch kein Server ausgeführt wird. Überprüfen Sie, ob ein Server über ausgeführt wirdtmux ls
. Wenn Sie die Befehle aus einer Datei ausführen möchten, während ein Server bereits ausgeführt wird, gehen Sie folgendermaßen vor:tmux source-file /path/to/conf-file-that-creates-a-session-and-windows \; attach
(Wenn Sie dies ausführen, während kein Server vorhanden ist, wird zuerst Ihre.tmux.conf
(oder die-f
Datei) und dann Ihresource-file
Datei ausgeführt.)tmux new -f myconfig
. Der Inhalt dieser Konfigurationsdatei enthält nurnew
gefolgt vonsplitw
. Ich bringe alle tmux-Prozesse zum Erliegen, bevor ich die Befehlszeile ausprobieretmux -f myconfig
. Ich bekomme keine zwei Scheiben. Ich bin hier wirklich ratlos, was ich nach diesem Punkt tun soll (abgesehen davon, dass ich nur auf tmux verzichte).-f
oder nicht,tmux
ist dasselbe wietmux new-session
(wodurch für neue Server eine neue Sitzung erstellt wird, unabhängig davon, was Ihre Konfigurationsdatei tut). Ihr Pre-Split-Fenster wird in Sitzung 0 erstellt, aber der implizitenew-session
Befehl erstellt eine zusätzliche Sitzung (Sitzung 1; suchen Sie[1]
in Ihrer Statuszeile nach) (und fügt sie hinzu). Verwenden Sietmux -f myconfig attach
diese Option , um zu vermeiden, dass eine neue Sitzung erstellt wird, in der das vorab geteilte Fenster ausgeblendet wird.Ich bin nicht sicher, ob ich verstehe, was Sie unter "manuell eingeben" verstehen, aber so mache ich es. Ich habe ein "Autostart" -Skript geschrieben, das mein Fenstermanager startet. Es beinhaltet:
Dabei sieht jede .session-Datei ungefähr so aus:
Warten Sie, es gibt noch mehr! Ich habe eine ständig wachsende Anzahl von .session-Dateien, die ich mit konsole lade:
wo work_console.tabs ungefähr so aussieht:
Dann drücke ich F12, um die Konsole zu starten.
quelle
Angenommen, Sie möchten drei Serverüberwachungsaufgaben starten (hier ping localhost). Es ist nicht erforderlich, mit Konfigurationsdateien und gespeicherten Sitzungen zu experimentieren. Dies kann alles über die Befehlszeile erfolgen.
quelle
Ich fand teamocil sehr nützlich, um tmux windows / sessions zu automatisieren.
Es ist in Ruby geschrieben und muss installiert werden.
Hier ist eine Beispielkonfiguration:
Sie können eine Anordnung von Fenstern und Teilungen festlegen.
quelle
Eine andere Alternative, die teamcoil ähnelt, ist tmuxinator , das sich in der aktiven Entwicklung befindet und recht gut funktioniert. Es wird auch für den erstaunlichen tmux empfohlen (und ein wenig rezensiert) : Produktive mausfreie Entwicklung von The Pragmatic Bookshelf .
quelle
**
Besser speichern Sie Ihre Sitzung!
** Ich fand, dass ich für einen faulen Administrator wie mich die Sitzung von tmux lieber retten würde, als Stunden damit zu verbringen, zu versuchen, sie perfekt zu erstellen. Ich verwalte mehr als 30 Server und meine tmux-Sitzungen sind dynamisch, wobei sich die Konfiguration ständig ändert. Es hat mir im Nacken wehgetan , bis ich kürzlich herausgefunden habe, dass tmux-resurrect dieses Plugin einfach großartig ist. Versuche es. Gegenwärtig haben Ubuntu-Repositories tmux 1.8, dieses Plugin benötigt 1.9, daher müssten Sie manuell upgraden
Danach können Sie es per installieren
Setzen Sie dann diese Zeile an das Ende von ~ / .tmux.conf (falls ~ / .tmux.conf nicht verfügbar ist, erstellen Sie eine leere Datei)
Ich füge diese Zeile auch am Ende der ~ / .tmux.conf hinzu, damit das Plugin Sitzungen für alle von mir ausgeführten Programme speichert
Laden Sie dann die tmux-Umgebung neu.
Das ist es! Du bist fertig. Führen Sie nun tmux wie gewohnt aus, ändern Sie die Größe Ihrer Fenster, erstellen Sie neue Fenster, erstellen Sie neue Sitzungen ... usw. Wenn Sie mit der erreichten Konfiguration zufrieden sind (in mehreren Fenstern und mehreren Sitzungen), klicken Sie einfach auf Strg + B und dann auf Strg + S, um die Sitzung zu speichern. Um die Ergebnisse zu testen, töten Sie einfach alle tmux
Führen Sie dann erneut tmux aus
Klicken Sie dann in tmux auf Strg + B und dann auf Strg + R (für die Wiederherstellung). Auf magische Weise werden alle Ihre Fenster, Fensterbereiche und Sitzungen mit derselben Geometrie und Anordnung wiederhergestellt. Hoffe das würde helfen.
quelle