Articles

15 Linux-Befehl Screen für den Umgang mit Terminal-Sitzungen

Posted on

Der Screen oder GNU-Screen ist ein Terminal-Multiplexer. Mit ihm können Sie beliebig viele konsolenbasierte Anwendungen, interaktive Befehlsshells, kursbasierte Anwendungen usw. ausführen. Sie können screen verwenden, um das Programm weiterlaufen zu lassen, nachdem Sie versehentlich das Terminal geschlossen haben, oder sogar, nachdem Sie sich abgemeldet haben und später an der gleichen Stelle weitermachen.

Ein praktisches Beispiel ist, dass Sie eine Aufgabe auf einem entfernten Linux-Rechner ausführen, in den Sie eine ssh-Sitzung haben. Oft haben Sie schon gesehen, dass diese ssh-Sitzung beendet wird und Sie nicht mehr arbeiten können. Hier kommt das Dienstprogramm screen, das Ihnen hilft, die Sitzungen wieder aufzunehmen.

Wie funktioniert screen?

Wenn screen aufgerufen wird, erstellt es ein einzelnes Fenster mit einer Shell darin (oder dem angegebenen Befehl) und geht Ihnen dann aus dem Weg, so dass Sie das Programm wie gewohnt verwenden können. Anschließend können Sie jederzeit neue (bildschirmfüllende) Fenster mit anderen Programmen darin (einschließlich weiterer Shells) erstellen, das aktuelle Fenster beenden, eine Liste der aktiven Fenster anzeigen, Text zwischen Fenstern kopieren, zwischen Fenstern wechseln usw.

Screen verwaltet eine Sitzung, die aus einem oder mehreren Fenstern besteht, die jeweils eine Shell oder ein anderes Programm enthalten. Außerdem kann screen eine Terminalanzeige in mehrere Bereiche unterteilen, die jeweils den Inhalt eines Fensters anzeigen. Alle Fenster führen ihre Programme völlig unabhängig voneinander aus. Programme laufen auch dann weiter, wenn ihr Fenster gerade nicht sichtbar ist, und sogar dann, wenn die gesamte Screen-Sitzung vom Terminal des Benutzers getrennt wird. Das ist praktisch, um eine ungewollte ssh-Timeout-Sitzung zu verhindern.

Nun schauen wir uns an, wie man dieses Hilfsprogramm unter Linux verwendet.

1) Neue Fenster aufrufen

Wenn der screen-Befehl noch nicht auf Ihrem System vorhanden ist, können Sie ihn mit dem folgenden Befehl installieren.

Unter Debian

# apt-get install screen

Unter Centos

# yum install screen

Sie können screen starten, indem Sie einfach screen in die Eingabeaufforderung eingeben. Dieser screen-Befehl startet ein neues Fenster innerhalb des Bildschirms.

# screen

Sie können ein neues Fenster innerhalb des Bildschirms starten und dem Fenster auch einen Namen geben, zum Beispiel aloft. Es wird eine Sitzung erstellt, die mit diesem Namen identifiziert wird. Der Name kann zu einem späteren Zeitpunkt wieder verwendet werden.

# screen -S aloft

Nehmen Sie zur Kenntnis, dass Sie alle Arbeiten wie in der normalen CLI-Umgebung durchführen können.

2) Alle Bildschirm-Prozesse auflisten

Da wir in der Lage sind, neue Fenster innerhalb des Bildschirms zu starten, ist es möglich, die aktuell geöffneten Bildschirme einschließlich der im Hintergrund laufenden anzuzeigen. Es werden alle vorhandenen Bildschirmsitzungen aufgelistet.

# screen -lsThere is a screen on: 10437.aloft (Attached)1 Socket in /var/run/screen/S-root.

3) Hauptbefehl von screen

Es ist möglich, mit screen zu arbeiten, indem man einige Befehle verwendet. Im Folgenden listen wir die wichtigsten Befehle auf, die am nützlichsten sind.

  • Ctrl-a gefolgt von c: ein neues Fenster erstellen
  • Ctrl-a gefolgt von w: Liste aller aktuell geöffneten Fenster anzeigen
  • Ctrl-a gefolgt von A: die aktuellen Fenster umbenennen. Der Name wird angezeigt, wenn Sie die Liste der geöffneten Fenster mit Ctrl-a gefolgt von w auflisten.
  • Ctrl-a gefolgt von n: zu den nächsten Fenstern gehen
  • Ctrl-a gefolgt von p: Zurück zu den vorherigen Fenstern
  • Ctrl-a gefolgt von Strg-a: Zurück zu den zuletzt verwendeten Fenstern.
  • Ctrl-a gefolgt von einer Zahl von 0 bis X: zu den Fenstern Nr. X gehen.
  • Ctrl-a gefolgt von ": die Fenster auswählen, in die man weitergehen möchte.
  • Ctrl-a gefolgt von k: die aktuellen Fenster schließen (kill)
  • Ctrl-a gefolgt von S: die aktuellen Fenster horizontal teilen. Um zwischen den Fenstern zu wechseln, machen Sie Ctrl-a, gefolgt von Tab.
  • Ctrl-a gefolgt von |: teilt die aktuellen Fenster vertikal
  • Ctrl-a gefolgt von d: Eine Bildschirmsitzung abtrennen, ohne sie zu stoppen
  • Ctrl-a, gefolgt von r: Eine abgetrennte Bildschirmsitzung wieder anhängen
  • Ctrl-a gefolgt von : den kopierten Text einfügen

4) Bildschirmparameter anzeigen

Sie können alle Parameter des Bildschirms zur Hilfe auflisten. Geben Sie dazu Ctrl-a gefolgt von dem Zeichen ? ein. Es wird eine Liste aller Befehle angezeigt.

5) Sitzung abtrennen

Der größte Vorteil des Bildschirmbefehls ist die Möglichkeit, eine Bildschirmsitzung abzutrennen. Sie können eine Bildschirmsitzung auf einem Computer im Büro starten, die Sitzung vom lokalen Terminal lösen, nach Hause gehen, sich per Fernzugriff an unserem Bürocomputer anmelden und die Bildschirmsitzung wieder an das Terminal unseres Heimcomputers ankoppeln. In der Zwischenzeit wurden alle Aufträge auf dem Bürocomputer weiter ausgeführt. Diese Funktion dient dazu, den Verlust von Daten zu verhindern, der bei einem plötzlichen Abbruch der ssh-Verbindung auftritt.

Um besser zu verstehen, wovon wir sprechen, lassen Sie uns ein Beispiel nehmen. Wir starten einen Installationsprozess.

Nun lösen wir den Bildschirm mit Ctrl-a gefolgt von d. Wir können das mit dem folgenden Befehl überprüfen.

# screen -lsThere is a screen on: 12449.win (Detached)1 Socket in /var/run/screen/S-root.

Es ist möglich, den Bildschirm mit dem Befehl screen -d, gefolgt von der Bildschirm-ID oder seinem Namen, zu lösen. Das bedeutet, dass Sie ein anderes Fenster oder eine andere Konsole öffnen müssen, um die Sitzung zu trennen, wenn in der aktuellen Konsole ein Prozess läuft. Sie müssen zuerst den aktuell angeschlossenen Bildschirm auflisten.

# screen -lsThere is a screen on: 13686.win200 (Attached)1 Socket in /var/run/screen/S-root.

Nun geben Sie in einem neuen Terminal den folgenden Befehl ein.

# screen -d 13686

oder Sie können den Namen verwenden

# screen -d win200

Sie erhalten eine Ausgabe wie unten, die anzeigt, dass der Bildschirm abgehängt wurde.


6) Sitzung wieder anhängen

Nachdem Sie den Bildschirm abgehängt haben, ist es möglich, ihn mit dem Befehl wieder anzuhängen. Normalerweise ist Ihre Bildschirmsitzung noch in Betrieb, so dass nicht alle Prozesse angehalten werden. Bevor Sie eine Sitzung wieder anhängen, müssen Sie die Sitzung wie oben beschrieben auflisten und dann die Sitzung auswählen, die Sie wieder anhängen möchten.

# screen -r 13686

Oder Sie können

# screen -r win200

Sie können sehen, dass nach dem erneuten Anhängen der Sitzung, die Fenster das Ende des Prozesses anzeigen, der abgeschlossen ist. Das bedeutet, dass Sie mit ssh arbeiten und eine Sitzung abtrennen können, die Sie zu Hause wieder anhängen, um Ihren Arbeitsprozess fortzusetzen, ohne etwas zu verlieren.

7) Erstellen einer neuen interaktiven Shell

Wenn Sie einige Aufgaben zu erledigen haben und Ihre Arbeit nicht verlieren wollen, ist es möglich, eine neue interaktive Shell zu erstellen. Sie können einfach mehrere interaktive Shells (nummeriert von 0 bis X) in einem Terminalfenster geöffnet haben. Wenn Sie eine neue Sitzung starten, befinden Sie sich in Shell 0.

Um dies zu tun, müssen Sie neue Fenster innerhalb bestehender Fenster mit Ctrl-a gefolgt von c erstellen. Sie erhalten dann etwas wie unten.

Oben auf dem Screenshot sehen Sie Bildschirm 3, was bedeutet, dass wir uns auf dem dritten Bildschirm befinden. Unten sehen wir auch 3

8) Umschalten zwischen Bildschirmfenstern

Wenn Sie mehr als ein Bildschirmfenster geöffnet haben, drücken Sie Control-a gefolgt von space oder der Nummer der Shell, um zwischen den einzelnen Fenstern zu wechseln. Um z. B. zur Shell Nummer 1 zu wechseln, drücken Sie Control-a und dann 1. Wir bewegen uns zum Beispiel auf dem ersten Bildschirm.

Der obere und untere Teil des Screenshots zeigt, dass wir uns auf dem ersten Bildschirm befinden.

9) Geteilte Fenster

Um einen Gesamtüberblick über Ihre Arbeit zu haben, können Sie Ihre Fenster teilen, anstatt mehrere Fenster zu haben. Ctrl-a gefolgt von S oder | teilen Ihren Bildschirm horizontal oder vertikal. Es ist möglich, den Vorgang unbegrenzt zu wiederholen. Um ein weiteres Fenster zu verschieben, verwenden Sie Ctrl-a gefolgt von Tab.

Wenn sich der Cursor auf den unteren Fenstern befindet, können Sie ein neues Fenster anlegen (Ctrl-a gefolgt von c) oder ein bestehendes Fenster aufrufen (Ctrl-a gefolgt von einer Zahl).

Um ein geteiltes Fenster zu schließen, verwenden Sie Ctrl-a gefolgt von X (Beachten Sie, dass es sich um einen Großbuchstaben handelt).

10) Verbindung zu einer getrennten ssh-Sitzung wiederherstellen

Wenn Sie sich zum ersten Mal anmelden,

  • führen Sie screen aus, um eine Bildschirmsitzung zu starten. Sie erhalten eine weitere Shell, in der Sie Befehle ausführen.
# screen -S remote_session
  • Wenn Sie fertig sind, trennen Sie die Bildschirmsitzung und melden sich dann per ssh ab

  • Sie können zunächst alle Bildschirmsitzungen auflisten
  • Verbinden Sie sich wieder mit Ihrer Bildschirmsitzung und setzen Sie Ihre Arbeit fortsetzen
# screen -d -r remote_ression

Der screen-Befehl wird vor allem für ssh-Sitzungen verwendet, da er hilft, die Arbeit nach einer Verbindungsunterbrechung fortzusetzen, ohne die aktuell laufenden Prozesse zu verlieren.

11) In screen-Fenstern nach oben scrollen

Da screen die Verwaltung Ihrer entfernten Programme übernimmt, können Sie die Scroll-Funktionen Ihres Terminalemulators nicht verwenden, während screen läuft. Sie müssen die Screen-Befehle verwenden, um auf den Scrollback-Puffer zuzugreifen.

  • Verwenden Sie Ctrl-a gefolgt von escape
  • Drücken Sie die Up und Down Pfeiltasten oder die PgUp und PgDn Tasten, um durch die vorherige Ausgabe zu blättern.

Sie können auf dem Screenshot sehen, wo sich mein Cursor befindet. Jedes virtuelle Terminal hat seinen eigenen Scrollback-Puffer.

12) Den Besitzer jeder Bildschirmsitzung sehen

Die screen -ls oder screen -list Befehle zeigen Ihnen nur Ihre eigenen Bildschirmsitzungen, auch für root. Soweit ich weiß, ist das das Beste, was es für screen selbst gibt.

Wenn Sie sehen wollen, welche screen-Sitzungen von welchen Benutzern gestartet wurden, schauen Sie in jedem Benutzerverzeichnis in /var/run/screen/.

13) Gemeinsame Nutzung einer Bildschirmsitzung mit einem Konto

Sie können zwei Personen haben, die von entfernten Standorten aus an demselben Konto angemeldet sind. Sie können ganz einfach eine Bildschirmsitzung teilen (so dass das, was der eine tippt, der andere sieht und andersherum). Um dies zu tun:

  • Erstellen Sie eine benannte Bildschirmsitzung:
# screen -d -m -S share_session
  • Hängen Sie die Bildschirmsitzung in Ihr Terminalfenster ein
# screen -x share_session
  • Haben Sie die andere Person (mit demselben Konto angemeldet) ebenfalls an die Bildschirmsitzung anschließen
# screen -x share_session

Sie werden genau die gleiche Ausgabe am anderen Ort angezeigt bekommen. Alles, was auf Ihrem Terminal angezeigt wird, erscheint auch auf dem Terminal des anderen Benutzers.

14) Bildschirmsitzung sperren

Es ist möglich, die Bildschirmsitzung zu sperren, ohne den normalen Benutzer der Sitzung zu sperren. Das bedeutet, dass Sie Ihren Computer verlassen können und sicher sein können, dass niemand zu unbefugten Operationen kommt. Verwenden Sie dazu den Befehl Ctrl-a gefolgt von x (Beachten Sie, dass es sich um einen Kleinbuchstaben handelt).

Screen used by root <root> on centos-01.Password:

15) Bildschirmsitzung beenden

Wenn Sie fertig sind und die Bildschirmsitzung beenden wollen, können Sie den Befehl Ctrl-a gefolgt von k verwenden. Sie werden zu einer Bestätigung aufgefordert.

Sie können auch den Befehl exit verwenden. Wenn Sie den laufenden Prozess speichern möchten, können Sie die Bildschirmsitzung einfach abkoppeln, bevor Sie die Sitzung beenden.

Abschluss

Das Bildschirm-Dienstprogramm kann ein Fenster auf Aktivität oder Inaktivität überwachen. Das ist praktisch, wenn Sie gerade große Dateien herunterladen, kompilieren oder auf eine Ausgabe warten. Zu diesem Zeitpunkt können Sie bei Bedarf sogar einen Prozess von einem Computer aus mit dem screen-Befehl starten und ihn wieder abkoppeln, wenn Sie fertig sind.

Schreibe einen Kommentar

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