GNU Screen und Tmux: Tipps und Tricks

8

Ich bin ein großer Fan von Multiplexern wie GNU Screen und Tmux , aber selbst wenn ich Screen seit Jahren benutze , erkenne ich immer noch, dass es viele Dinge gibt, die ich nicht weiß (und ich benutze Tmux nur für ein paar Monate, also ist es schlimmer ).

Welche Konfigurationen und Tipps und Tricks verwenden Sie für diese Software (beide oder für jede, egal)?

Ich benutze dies als meine Bildschirmkonfiguration (ich glaube, ich habe dies von Ubuntus Standard angepasst screenrc):

shell -$SHELL
startup_message off
defscrollback 1000
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''
termcapinfo xterm* 'hs:ts=\\E]2;:fs=\\007:ds=\\E]2;screen\\007'

Es ist eine einfache Konfiguration, die Statusleiste mit einigen Farben anzuzeigen, aber ich bin mir sicher, dass ich mit Bildschirm und Tmux noch mehr Dinge tun kann und würde es gerne wissen.

Core-Dump
quelle
zombie qrhält das Fenster offen, auch wenn der Prozess tot ist, und ermöglicht qes, es zu schließen oder rden Prozess wiederzubeleben. Nützlich für die Softwareüberprüfung.
Ency

Antworten:

4

Dies mag für diese Menge etwas einfach sein, aber ich fand es nützlich, dies am Ende von .profile hinzuzufügen, damit ich, wenn ich mich über ssh remote anmelde, die MOTD lesen und dann zum Bildschirm wechseln kann.

if [ -n "$SSH_TTY" ]
then
        read -p "Press <ENTER> to continue." enterkey
        exec /usr/bin/screen -D -R
fi
bgvaughan
quelle
3

Ich habe das in meinem .bashrc. Wenn Sie keinen Bildschirm ausführen, wird diese Funktion sshbei der Ausführung wie gewohnt aufgerufen. Wenn Sie im Bildschirm ausgeführt werden (und die Standardeinstellung nicht geändert haben $TERM), wird zuerst der Fenstername auf den Remote-Host festgelegt (zusammen mit allen optionalen Parametern). Es ist sehr praktisch, den Überblick über Remoteverbindungen zu behalten, wenn viele offen sind, was meiner Meinung nach in unserer Branche häufig vorkommt.

function ssh () {
if [ $TERM = "screen-bce" ]
    then
    screen -X title "$*" 
    /usr/bin/ssh $*
else
    /usr/bin/ssh $*
fi
}

Ich benutze auch bind ^A windowlist -bfür den einfachen Zugriff auf die Fensterliste (tippe einfach zweimal auf Strg-A).

Einfache Unterstützung für SSH-Agenten für alle Fenster:

setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
screen 10 ssh-agent -a $SSH_AUTH_SOCK $SHELL

Dann führen Sie in jedem Fenster nur einmal ssh-add aus, wenn Sie eine neue Sitzung starten.

Wenn Sie eine Verbindung zu einer Remote-Bildschirmsitzung innerhalb einer anderen Bildschirmsitzung herstellen, können Sie screen -x -e ^Vvdie Steuersequenz (z. B.) auf STRG-V setzen. Dadurch wird vermieden, dass STRG-As verkettet werden muss, um die Remote-Sitzung zu steuern.

Eduardo Ivanec
quelle
0

Sie sollten erwägen byobu , die im Wesentlichen eine Sammlung von Hunderten von Tipps ist, Tricks, Konfigurationen, keybindings, Status - Skripte und Best Practices orientiert sich an screenund tmux.

Dustin Kirkland
quelle
0

Obwohl ich angefangen habe, tmux für Fenster zu verwenden, verwende ich immer noch den Bildschirm, um die darin enthaltenen Fenster zu multiplexen. tmux hat angeblich diese Funktionalität, aber das Vertauschen von Fenstern von einem Fenster in ein anderes ist für mich weder intuitiv, noch können zwei angeschlossene tmux-Viewer unterschiedliche Fenster innerhalb desselben Daemons anzeigen (screen -x-Verhalten), daher die screen-in-tmux-Lösung. Dies sind zwei tmux.conf-Bindungen, für deren Ermittlung ich am längsten gebraucht habe und die ich jeden Tag verwende.

Die erste Option, M binden (Strg-B-Umschalt-M), schaltet tmux zwischen Mausfensterauswahl und Maushervorhebung / -kopie um. Sie können weiterhin im Pane-Pick-Modus kopieren / einfügen, aber Sie müssen die Umschalttaste gedrückt halten (und wenn Sie sich daran gewöhnen, macht das Kopieren / Einfügen in einer anderen Anwendung Sie ein bisschen elend, lassen Sie es mich sagen). Das Makro macht auch visuell deutlich, welcher Modus gerade ausgewählt ist.

bind M set mouse-select-pane \; if '[ "`tmux show -v mouse-select-pane`"= "on" ]' "set status-bg cyan \; set pane-active-border-bg cyan" "set status-bg green \; set pane-active-border-bg default"

Die zweite Option, CL binden (Strg-B Strg-L), nimmt ein beliebiges Layout von 4 Fenstern und verwandelt es in mein bevorzugtes Layout. Oft stelle ich fest, dass ich in einem Bereich, von dem ich dachte, dass er sich im Bildschirm befindet, Strg-D gedrückt habe, um ihn zu schließen. Stattdessen gab es keine Bildschirmsitzung und der Bereich wurde geschlossen. Da mein Layout V-Split, H-Split, V-Split und einige Größenänderungen ist, wird es zum Problem (kein Wortspiel beabsichtigt), Zwischenfenster zwischen dem Fenster, das ich neu erstellen muss, zu schließen, wenn ich versehentlich nur das letzte Fenster geschlossen habe und die letzte, erstellen Sie die Fenster neu und ändern Sie die Größe. Fügen Sie schließlich alle Bildschirmsitzungen wieder hinzu, die ich möglicherweise beim Beenden von Fenstern trennen musste. Mit diesem Makro kann ich ein neues Fenster erstellen, Strg-B {(die Standardbindung für Swap-Fenster -U), bis es wieder in der richtigen Reihenfolge ist, dann das Makro drücken und alles wieder normal ist. Mein bevorzugtes Layout ist wahrscheinlich nicht das gleiche wie deins.list-windows Befehl, um eine Layoutzeichenfolge wie die folgende zu erhalten.

bind C-L select-layout a18e,155x94,0,0[155x18,0,0,6,155x75,0,19{81x75,0,19,31,73x75,82,19[73x22,82,19,32,73x52,82,42,33]}]

Wenn das für Ihren Geschmack zu naiv ist, gibt es immer einen Tmuxinator für die Scheibenverwaltung.

Andrew Domaszek
quelle