Kategorien
Allgemein Infrastruktur Server Tools

Terminal Multiplexing ist so etwas ähnliches wie Windows mit Zoom

Neulich hatte ich so einen Fall. Auf meinem Root Server gab es Probleme mit der Datenbank und ich brauchte Hilfe. Wenn ich auf dem Server arbeite, mache ich das auf der Kommandozeile. Es gibt keine graphische Benutzeroberfläche. Ich öffne ein Terminalfenster, verbinde mich mit dem Server und kann dann Kommandos eingeben.

Ich fand jemanden, der bereit war, mir remote zu helfen. Das hat mich gefreut!

Dann stellte sich aber die Frage, wie wir das jetzt ganz konkret machen. Das root Passwort für den Server sollte man als Administrator niemals herausgeben und wenn, dann wirklich nur an Personen, denen man zu „110%“ vertraut.

Die Zauberwort für die Lösung dieses Problems heisst Terminal Multiplexing. Man kann dabei, wie bei grafischen Benutzeroberflächen, viele Fenster öffnen und auch gemeinsam und remote auf ein Terminalfenster zugreifen. Auf diese Weise haben wir uns gemeinsam durch das Problem gehangelt und auch eine Lösung gefunden.

Als Terminal Multiplexer haben wir das Programm tmux genutzt. Ich beschreibe im weiteren Verlauf, wie das funktioniert und wie es eingerichtet wird.

Ich habe auf meinem Server als Linux Distribution Ubuntu. Dort ist das Programmpaket tmux bereits installiert. Sollte es noch nicht installiert sein, einfach diesen Befehl eingeben:

sudo apt-get install tmux

Eine erste Session

Um tmux auszuprobieren, verbinde dich einfach mit deinem Server und rufe tmux auf:

tmux

Als Ergebnis siehst du auf deinem Terminal eine Statuszeile am unteren Bildrand. Sie ist ein wichtiger Bestandteil von tmux. Neben den aktuell geöffneten Fenstern (auf der linken Seite) zeigt sie auch Systeminformationen wie Datum und Uhrzeit (auf der rechten Seite) an. Die Statusleiste kann auch angepasst werden, beispielsweise um den Batteriestatus anzuzeigen.

Eine erste tmux session

Bitte jetzt nicht erschrecken, aber ich mache einen kleinen Rundflug durch tmux damit du besser verstehst wie das Tool funktioniert.

Das Fenster teilen

Ich teile einfach den Bildschirm mit dem Kommando crtl-b %. Die Tastenkombination ctrl-b sorgt dafür, das tmux sich angesprochen fühlt. Das Zeichen danach ist dann der eigentliche Befehl.
Am Anfang ist es ein wenig schwer die Tasten zu treffen, daher hier nochmal ausführlich:
Du drückst die ctrl-Taste und die b-Taste gemeinsam. Dann lässt du beide Tasten gleichzeitig wieder los und drückst danach die %-Taste.

Das Ergebnis sollte so aussehen wie im nächsten Screenshot:

tmux Session mit zwei Fenstern

Du hast jetzt zwei Fenster in einem oder eher ein geteiltes Fenster.

Der Bildschirm wurde vertikal geteilt. Der Cursor ist im rechten Pane.

Das was da entsteht heisst Pane. Die Struktur, die die Panes umgibt heisst Fenster, bzw. Window oder Session.

Mit dem Befehl exit (auf die Zeile schreiben und Enter-Taste drücken) oder der Tastenkombination ctrl-d kannst du das Pane wieder schliessen. Mit ctrl-b und den <Pfeiltasten> links oder rechts (bzw. nach oben oder nach unten) kannst du zwischen den Panes hin und her springen.

Vertikal lässt sich das Fenster mit ctrl-b " in weitere Panes teilen.

horizontal und vertikal geteilte Fenster

Neue Fenster erzeugen

Was wir eben innerhalb eines Fensters gemacht haben, könnte man auch als Desktop bezeichnen. Wir haben mehrere Panes in einem Window oder eben mehrere Fenster in einem Desktop erzeugt. Das mit den Bezeichnungen ist etwas verwirrend, es ist natürlich völlig egal wie man das nennt. Das Prinzip gibt es auch bei Apple macOS und Microsoft Windows. Dort hat ein Desktop mehrere Fenster und man kann zwischen verschiedenen Desktops wechseln.

Wichtig zu merken und zu verstehen ist eigentlich nur, dass man in einem „Terminalfenster“ mehrere durch Panels geteilte Fenster haben kann.

Ja und nun erstellen wir mal ein zusätzliches Fenster mit dem Befehl ctrl-b c.

Ein neues Fenster. In der Statuszeile sind jetzt zwei Einträge

Mit ctrl-b p (für previous) kannst du in das vorherige Fenster wechseln, mit ctrl-b n (für next) in das nächste Fenster.

Mit ctrl-b d (für detach) kannst du das Fenster „abtrennen“.
Zum „beenden/detachen“ gibt es auch die Tastenkombination ctrl-b D (grosses D). Hier wird eine Übersicht über alle Fenster (Sessions) angezeigt. Bei der Auswahl mit den <Pfeiltasten> nach oben und nach unten wird der jeweilige Fensterinhalt angezeigt. Wenn das ausgewählte Fenster mit der Enter Taste bestätigt wird, wird es geschlossen.

WICHTIG! Bei diesem Vorgang wird die Session nicht beendet, sondern nur das Fenster drumherum „detached“ also von tmux getrennt, oder abgetrennt.

Mit der Esc Taste kommt man aus diesem Dialog wieder raus ohne etwas abgetrennt zu haben 🙂

tmux Fensterauswahl nach ctrl-D

Die existierenden Fenster lassen sich mit dem Befehl

tmux ls

anzeigen. Das sieht dann so aus:

Im Screenshot sieht man, dass zwei Fenster, mit der Nummer 0 und 5 „attached“ und ein Fenster, die 4 „nicht attached“ oder „detached“ sind.

Fenster an- und abtrennen (attach and detach)

Man ahnt es vermutlich schon. Es gibt einen Befehl um Fenster an- und abzutrennen. Auch das ist am Anfang etwas verwirrend und man muss es ein paar mal ausprobieren. Ein Fenster kannst du mit dem Befehl

tmux attach -t 0

Die 0 steht für die entsprechende Nummer des Fensters. Wem eine Nummer für ein Fenster zu unübersichtlich ist, der kann dem Fenster auch einen Namen geben.

Der folgende Befehl legt ein Fenster mit dem Namen database an

tmux new -s database

In der Übersicht (tmux ls) sieht es dann so aus:

Fenster mit Namen anstelle einer Nummer

Remote Zugriff

Ja und jetzt kommt das für meinem Fall relevante Feature.

Die tmux Fenster (Sessions) existieren auf dem Server, egal ob jemand damit per SSH verbunden ist oder nicht.

Wenn ich mich nun von „woanders“ einlogge, so kann ich immer auf die Fenster mit tmux ls und tmux attach -t <fenstername> zugreifen.

In meinem Fall wollten wir ja an der Datenbank arbeiten. Die Datenbank hat einen User mit dem Namen postgres. Die Person, die mir hilft, benötigt einen Zugang zum User postgres. Der Zugang geht ohne Passwort am einfachsten, wenn ich den öffentlichen Schlüssel dieser Person im .ssh Verzeichnis in die autorized_key Datei eintrage.

Und jetzt … tada …

Wir melden uns beide beim Server an, „attachen“ beide das richtige Fenster mit tmux und können gleichzeitig schreiben. Meistens schreibt nur eine Person, aber die andere Person kann natürlich live zuschauen was passiert.

Wenn man nun dazu noch telefonisch oder durch einen anderen Audio Kanal verbunden ist, kann man sich darüber unterhalten, was getan wird.

Die Vorgehensweise ist sehr praktisch und effektiv, weil die eine Person, nennen wir sie Angelika, root-Rechte hat, die andere Person, nennen wir sie Egon, aber nicht. Wenn Egon nun root-Rechte für einen Befehl benötigt, kann Angelika entscheiden ob das o.k. ist und diesen Befehl dann ausführen.

Fazit

Das Tool tmux ist eine Möglichkeit mit mehreren Fenstern, Panes und Sessions zu arbeiten, und auch ein sehr leistungsfähiges Tool um gemeinsam remote in einem Terminalfenster zu arbeiten.

Links


tl;dr: Mit tmux kann man sehr schön gemeinsam in einem Terminal Fenster arbeiten

Von hagengraf

Ich erstelle bequeme und benutzerfreundliche Orte in virtuellen und physischen Umgebungen.

8 Antworten auf „Terminal Multiplexing ist so etwas ähnliches wie Windows mit Zoom“

Reposts

  • Hagen Graf

Erwähnungen

  • hagengraf

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert