Wie kann ich mehrere Terminalsitzungen über eine einzige SSH-Verbindung durchführen?

21

Ich habe eine Ubuntu-Server-Edition, auf der SSH ausgeführt wird, um verschiedene Aufgaben auszuführen. Was ich möchte, ist die Möglichkeit, mit SSH auf meinem Server eine Serveranwendung zu starten und dann zu einer anderen "virtuellen" Sitzung (mit derselben SSH-Instanz) zu wechseln und Client-Aufrufe für den Dienst auszuführen. Wenn ich den Dienst starte, handelt es sich um einen blockierenden Aufruf, sodass ich keine Client-Aufrufe ausführen kann, ohne eine andere SSH-Sitzung zu starten.

Ich hatte gehofft, dass es einen etwas schlankeren Weg gibt, so wie es die Benutzeroberfläche mit virtuellen Desktops tut.

JPrescottSanders
quelle

Antworten:

24

Was Sie verwenden möchten, ist screen oder noch besser ein benutzerfreundlicher Wrapper um screen namens byobu.

Auf dem Bildschirm können Sie mehrere virtuelle Terminalsitzungen in derselben SSH-Sitzung ausführen. Ein Tutorial und Hilfeseiten stehen zur Verfügung.

byobu ist ein Wrapper, mit dem Sie einfach neue Bildschirme mit einer einfachen Funktionstaste anstelle einer Tastenkombination von Strg-A öffnen können. Außerdem wird eine Statuszeile mit allen offenen virtuellen Terminals angezeigt, die benannt werden können.

Ein weiteres nettes Feature ist die Tatsache, dass Ihr gesamter Bildschirm eingeschaltet bleiben kann, während Ihre SSH-Verbindung getrennt ist. Du verbindest dich einfach wieder per ssh und rufst byobu an und alles ist wie vorher.

Endlich ein paar Screenshots von byobu.

txwikinger
quelle
5

GNU Screen ist die Antwort, nach der Sie gesucht haben - aber es ist Vi sehr ähnlich. Sie haben eine Menge Erfahrung mit Befehlen zum Einrichten einer erfolgreichen Bildschirmumgebung. Hier sind ein paar Dinge, mit denen Sie anfangen können. Zunächst möchten Sie diese .screenrc http://paste.ubuntu.com/473764/ auf dem Remote-Server in Ihrem Benutzerordner speichern. Nächster Installationsbildschirm auf dem Remote-Computer ( sudo apt-get install screen) Als nächstes möchten Sie ihn starten. Hier sind einige Befehle zum "Starten des Bildschirms":

screen- Das ist ziemlich einfach. Startet eine neue Bildschirmsitzung screen -ls- Listet alle aktiven Bildschirmsitzungen auf. Ja, Sie können mehrere Terminals in mehreren Bildschirmen haben. SO SÜSS.

Probe

screen -ls
There is a screen on:
    16467.pts-0.ubuntu  (08/05/2010 07:47:53 PM)    (Detached)
1 Socket in /var/run/screen/S-marco.

screen -x <pid> - Dadurch wird eine getrennte Bildschirmsitzung fortgesetzt. IE: screen -x 16467

Sobald Sie in einem Bildschirm sind (und Sie haben meine Probe eingesetzt .screenrc verwendet haben), sehen Sie unten Folgendes:

(LOAD) 0$* bash

Welches ist die Serverlast und eine Liste aller offenen "Terminal-Registerkarten". Derzeit nur ein Fenster. Geben Sie etwas ein Ctrl + Aund drücken Sie diese Tastenkombination: Lassen Sie los und drücken Sie dann c. Ctrl + Aist die Fluchtsequenz. Alle Befehle werden mit dieser Kombination gestartet.cist eine neue Registerkarte erstellen. Sie werden feststellen, dass in der Fußzeile ein (LOAD) 0-$ bash 1$* bashweiterer Tab geöffnet ist und der aktive Tab die Nummer 1 hat. Sie können maximal 60 Tabs pro Bildschirmsitzung öffnen.

Wenn Sie zum Beenden Bildschirm wollen , aber halten Sie es verwenden laufen Ctrl + Adann ddie Ihre Sitzung trennen. Schließlich können Sie die Registerkarten mit Ctrl + Athen schließenk wodurch diese Registerkarte beendet wird (falls sie blockiert). In der Regel können Sie jedoch einfach eingeben, exitals befänden Sie sich in einem Terminal, und diese Registerkarte wird geschlossen.

Schließlich aufzulisten alle Fenster öffnen können Sie eingeben , Ctrl + Adann" .

Es gibt eine ganze Reihe von Optionen für den Bildschirm, die Sie für weitere Informationen über die Man-Datei ziehen sollten. Es gibt einige Nachteile. Sie können die Bildlaufleiste in Screen nicht verwenden. Sie müssen die Puffersteuerelemente zum Zurücksetzen verwenden. Die obigen Anweisungen reichen jedoch aus, um zu prüfen, ob dies eine praktikable Option ist. Dies ist eine großartige Sache und etwas, mit dem ich mich als Systemadministrator schon oft befasst habe - Netzwerkkonnektivität. Wenn Ihr Netzwerk ausfällt, gehen Ihre Vorgänge nicht verloren! Da Bildschirm läuft auf dem Server. Sie müssen sich einfach wieder über SSH anmelden screen -lsund dann screen -xwieder in Ihre Sitzung einsteigen.

Marco Ceppi
quelle
Sieht so aus, als hätte mich txwikinger mit ein paar hilfreichen Links geschlagen!
Marco Ceppi
Geben Sie Ctrl + Adann ein ?, um zur Hilfeseite zu gelangen. Dort sind alle Befehle und Verknüpfungen aufgelistet. Geben Sie Ctrl + Adann ein :, um einen der Befehle nach Namen zu verwenden, wenn Sie sich den Namen merken, aber den Hotkey vergessen haben.
Dan
1

Wenn Sie Ubuntu Server Edition verwenden, byobuist dies definitiv die beste Option. Das Ubuntu Server-Handbuch enthält einige nützliche Dokumentationen .

Es ist in der Regel einfacher zu erlernen und zu verwenden als screenund standardmäßig installiert.

jbowtie
quelle
0

Ich verwende Emacs, daher erschwert die Standardkonfiguration des Bildschirms mein Leben.

$ cat /home/cjac/.screenrc 

Flucht ^ \

Versuch das!

cjac
quelle