In diesem Handbuch werden wir sehen, was GNU Screen ist und die grundlegende Verwendung des Screen-Befehls mit Beispielen in Linux- und Unix-Betriebssystemen.
Was ist GNU Screen?
GNU-Bildschirm ist ein Terminal-Multiplexer (Fenstermanager). Wie der Name schon sagt, multiplext Screen das physische Terminal zwischen mehreren interaktiven Shells, sodass wir in jeder Terminalsitzung unterschiedliche Aufgaben ausführen können.
Alle Bildschirmsitzungen führen ihre Programme völlig unabhängig voneinander aus. Ein Programm oder Prozess, das innerhalb einer Bildschirmsitzung ausgeführt wird, wird also weiter ausgeführt, selbst wenn die Sitzung versehentlich geschlossen oder getrennt wird.
Zum Beispiel beim Upgrade von Ubuntu Server über SSH, führt der Screen-Befehl den Upgrade-Prozess weiter aus, falls Ihre SSH-Sitzung aus irgendeinem Grund beendet wird.
Der GNU-Bildschirm ermöglicht es uns, auf einfache Weise mehrere Bildschirmsitzungen zu erstellen, zwischen verschiedenen Sitzungen zu wechseln, Text zwischen Sitzungen zu kopieren, jederzeit eine Sitzung anzuhängen oder von einer Sitzung zu trennen und so weiter.
GNU Screen ist eines der wichtigsten Befehlszeilentools, das jeder Linux-Administrator lernen und bei Bedarf verwenden sollte.
Lassen Sie uns anhand von Linux-Beispielen sehen, wie Sie mehrere Terminal-Sitzungen mit dem Screen-Befehl verwalten.
Installieren Sie GNU Screen unter Linux
GNU Screen ist in den Standard-Repositories der meisten Linux-Betriebssysteme verfügbar.
Um GNU Screen auf Arch Linux, EndeavourOS, Manjaro Linux zu installieren, führen Sie Folgendes aus:
$ sudo pacman -S screen
Unter Debian, Ubuntu, Linux Mint:
$ sudo apt-get install screen
Auf Fedora, RHEL, CentOS. AlmaLinux, Rocky Linux:
$ sudo dnf install screen
Oder,
$ sudo yum install screen
Unter CentOS 8 ist Screen in den offiziellen Repositories nicht verfügbar. Sie müssen also [EPEL]
aktivieren Repository und dann Bildschirm installieren.
$ sudo dnf install epel-release
$ sudo dnf install screen
Unter SUSE/openSUSE:
$ sudo zypper install screen
Lassen Sie uns fortfahren und einige Beispiele für Bildschirmbefehle sehen.
Beispiele für Bildschirmbefehle
Die Standard-Präfix-Verknüpfung für alle Befehle in Screen ist Ctrl+a
. Sie müssen diese Verknüpfung häufig verwenden, wenn Sie Screen verwenden. Merken Sie sich also einfach diese Tastenkombination.
Neue Bildschirmsitzung erstellen
Lassen Sie uns eine neue Bildschirmsitzung erstellen und daran anhängen. Geben Sie dazu im Terminal den folgenden Befehl ein:
screen
Führen Sie nun ein beliebiges Programm oder einen beliebigen Prozess in dieser Sitzung aus. Der laufende Prozess oder das laufende Programm wird auch dann weiter ausgeführt, wenn Sie von dieser Sitzung getrennt werden.
Von Bildschirmsitzungen trennen
Um sich innerhalb einer Bildschirmsitzung zu trennen, drücken Sie Strg+a und d . Sie müssen nicht beide Tastenkombinationen gleichzeitig drücken. Drücken Sie zuerst Strg+a und drücken Sie dann d . Nachdem Sie sich von einer Sitzung getrennt haben, sehen Sie eine Ausgabe wie die folgende.
[detached from 29149.pts-0.sk]
Hier, 29149 ist die Bildschirm-ID und pts-0.sk ist der Name der Bildschirmsitzung. Sie können Bildschirmsitzungen anhängen, trennen und beenden, indem Sie entweder die Bildschirm-ID oder den Namen der jeweiligen Sitzung verwenden.
Erstellen Sie eine benannte Sitzung
Sie können auch eine Bildschirmsitzung mit einem beliebigen benutzerdefinierten Namen Ihrer Wahl erstellen, der nicht dem Standardbenutzernamen entspricht, wie unten gezeigt.
screen -S ostechnix
Der obige Befehl erstellt eine neue Bildschirmsitzung mit dem Namen "xxxxx.ostechnix" und sofort daran anhängen. Um die aktuelle Sitzung zu trennen, drücken Sie Strg+a gefolgt von d .
Das Benennen von Bildschirmsitzungen kann hilfreich sein, wenn Sie herausfinden möchten, welche Prozesse in welchen Sitzungen ausgeführt werden. Wenn beispielsweise ein Setup-LAMP-Stapel in einer Sitzung vorhanden ist, können Sie ihn einfach wie unten benennen.
screen -S lampstack
Getrennte Sitzungen erstellen
Manchmal möchten Sie vielleicht eine Sitzung erstellen, diese aber nicht automatisch anhängen. Führen Sie in solchen Fällen den folgenden Befehl aus, um eine getrennte Sitzung mit dem Namen "senthil" zu erstellen :
screen -S senthil -d -m
Oder kurz:
screen -dmS senthil
Der obige Befehl erstellt eine Sitzung namens "senthil", wird aber nicht daran angehängt.
Bildschirmsitzungen auflisten
Führen Sie Folgendes aus, um alle laufenden Sitzungen (verbunden oder getrennt) aufzulisten:
screen -ls
Beispielausgabe:
There are screens on: 29700.senthil (Detached) 29415.ostechnix (Detached) 29149.pts-0.sk (Detached) 3 Sockets in /run/screens/S-sk.
Wie Sie sehen können, habe ich drei laufende Sitzungen und alle sind getrennt.
Wenn es keine laufenden Bildschirmsitzungen gab, erhalten Sie eine Ausgabe wie unten.
No Sockets found in /run/screen/S-sk.
An Bildschirmsitzungen anhängen
Wenn Sie jederzeit an eine Sitzung anhängen möchten, z. B. 29415.ostechnix , führen Sie einfach Folgendes aus:
screen -r 29415.ostechnix
Oder,
screen -r ostechnix
Oder verwenden Sie einfach die Bildschirm-ID:
screen -r 29415
Um zu überprüfen, ob wir mit der oben genannten Sitzung verbunden sind, listen Sie einfach die offenen Sitzungen auf und überprüfen Sie.
screen -ls
Beispielausgabe:
There are screens on: 29700.senthil (Detached) 29415.ostechnix (Attached) 29149.pts-0.sk (Detached) 3 Sockets in /run/screens/S-sk.
Wie Sie in der obigen Ausgabe sehen, sind wir derzeit an 29415.ostechnix angehängt Sitzung. Um die aktuelle Sitzung zu verlassen, drücken Sie Strg+a, d.
Verschachtelte Sitzungen erstellen
Wenn wir den Befehl „screen“ ausführen, wird eine einzelne Sitzung für uns erstellt. Wir können jedoch verschachtelte Sessions (eine Session innerhalb einer Session) erstellen.
Erstellen Sie zunächst eine neue Sitzung oder hängen Sie sie an eine geöffnete Sitzung an. Ich werde eine neue Sitzung mit dem Namen "nested" erstellen.
screen -S nested
Drücken Sie jetzt Strg+a und c innerhalb der Sitzung, um eine weitere Sitzung zu erstellen. Wiederholen Sie dies einfach, um eine beliebige Anzahl verschachtelter Screen-Sitzungen zu erstellen. Jeder Sitzung wird eine Nummer zugeordnet. Die Nummer beginnt bei 0 .
Sie können zur nächsten Sitzung wechseln, indem Sie Strg+n drücken und wechseln Sie zum vorherigen, indem Sie Strg+p drücken .
Hier ist die Liste wichtiger Tastenkombinationen zum Verwalten verschachtelter Sitzungen.
- Strg+a ” - Alle Sitzungen auflisten
- Strg+a 0 - Wechseln Sie zu Sitzungsnummer 0
- Strg+a n - Zur nächsten Sitzung wechseln
- Strg+a p - Zur vorherigen Sitzung wechseln
- Strg+a S - Aktuelle Region horizontal in zwei Regionen aufteilen
- Strg+a l - Aktuelle Region vertikal in zwei Regionen aufteilen
- Strg+a Q - Schließen Sie alle Sitzungen außer der aktuellen
- Strg+a X - Schließen Sie die aktuelle Sitzung
- Strg+a \ - Beenden Sie alle Sitzungen und beenden Sie Screen
- Strg+a ? - Tastenkombinationen anzeigen. Um dies zu beenden, drücken Sie ENTER.
Sitzungen sperren
Screen hat eine Option, um eine Bildschirmsitzung zu sperren. Drücken Sie dazu Strg+a und x . Geben Sie Ihr Linux-Passwort ein, um den Bildschirm zu sperren.
Screen used by sk <sk> on ubuntuserver. Password:
Sitzungen protokollieren
Möglicherweise möchten Sie alles protokollieren, wenn Sie sich in einer Bildschirmsitzung befinden. Drücken Sie dazu einfach Strg+a und H .
Alternativ können Sie die Protokollierung beim Starten einer neuen Sitzung mit -L aktivieren Parameter.
screen -L
Von nun an werden alle Aktivitäten, die Sie innerhalb der Sitzung durchgeführt haben, aufgezeichnet und in einer Datei namens screenlog.x gespeichert in Ihrem $HOME-Verzeichnis. Hier, x ist eine Zahl.
Sie können den Inhalt der Protokolldatei mit cat anzeigen Befehl oder beliebige Textbetrachter-Anwendungen.
Empfohlene Lektüre:
- So zeichnen Sie alles auf, was Sie im Terminal tun
Autostart-Bildschirmsitzungen
Das automatische Starten von Screen-Sitzungen ist sehr hilfreich, wenn Sie einen lang andauernden Prozess über SSH ausführen. Wenn Sie aus irgendeinem Grund die Netzwerkverbindung verloren haben, wird der Prozess innerhalb der Screen-Sitzung im Remote-System weiter ausgeführt und Sie können sich erneut damit verbinden, wenn das Netzwerk wieder online ist. Informationen zum automatischen Starten eines Bildschirms beim Systemstart finden Sie unter folgendem Link.
- So starten Sie die Bildschirmsitzung unter Linux beim Anmelden automatisch
Überprüfen Sie, ob Sie eine Bildschirmsitzung sind oder nicht
Wie Sie vielleicht bemerkt haben, sehen die normale Sitzung und die Bildschirmsitzung genau gleich aus. Sie sehen keinen offensichtlichen Hinweis darauf, ob Sie sich in der Bildschirmsitzung oder in der normalen Sitzung befinden. Um zu erfahren, ob Sie sich in einer Bildschirmsitzung befinden oder nicht, folgen Sie den Schritten im folgenden Link.
- So überprüfen Sie, ob Sie sich in einer Bildschirmsitzung befinden oder nicht in Linux
Kill Screen-Sitzungen
Wenn eine Sitzung nicht mehr benötigt wird, beenden Sie sie einfach. So beenden Sie eine getrennte Sitzung mit dem Namen "senthil":
screen -r senthil -X quit
Oder,
screen -X -S senthil quit
Oder,
screen -X -S 29415 quit
Wenn es keine offenen Sitzungen gibt, sehen Sie die folgende Ausgabe:
$ screen -ls No Sockets found in /run/screens/S-sk.
Weitere Einzelheiten finden Sie in den Manpages.
$ man screen
Es gibt auch ein ähnliches Befehlszeilenprogramm namens "Tmux" was den gleichen Job macht wie GNU Screen. Um mehr darüber zu erfahren, lesen Sie die folgende Anleitung.
- Tmux-Befehlsbeispiele zum Verwalten mehrerer Terminalsitzungen