Der Bildschirm oder GNU-Bildschirm ist ein Terminal-Multiplexer. Damit können Sie eine beliebige Anzahl von konsolenbasierten Anwendungen, interaktiven Befehlsshells, kursbasierten Anwendungen usw. ausführen. Sie können screen verwenden, um das Programm weiter auszuführen, nachdem Sie das Terminal versehentlich geschlossen haben, oder sogar nachdem Sie sich abgemeldet haben und später fortsetzen, wo immer Sie sind.
Ein praktisches Beispiel ist, wenn Sie eine Aufgabe auf einem Remote-Linux-Computer ausführen, in dem Sie eine SSH-Sitzung haben. Sie haben oft gesehen, wie diese SSH-Sitzung beendet wurde und Sie nicht mehr arbeiten können. Hier kommt das Bildschirmdienstprogramm, um die Sitzungen fortzusetzen.
Wie funktioniert der Bildschirm?
Wenn screen aufgerufen wird, erstellt es ein einzelnes Fenster mit einer darin enthaltenen Shell (oder dem angegebenen Befehl) und geht dann aus dem Weg, sodass Sie das Programm wie gewohnt verwenden können. Dann können Sie jederzeit neue (Vollbild-)Fenster mit anderen Programmen darin erstellen (einschließlich weiterer Shells), das aktuelle Fenster beenden, eine Liste der aktiven Fenster anzeigen, Text zwischen Fenstern kopieren, zwischen Fenstern wechseln usw .
Bildschirm verwaltet eine Sitzung bestehend aus einem oder mehreren Fenstern jede enthält eine Shell oder ein anderes Programm. 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 werden weiter ausgeführt, wenn ihr Fenster derzeit nicht sichtbar ist, und selbst wenn die gesamte Bildschirmsitzung vom Terminal des Benutzers getrennt ist. Dies ist praktisch, um ein unfreiwilliges SSH-Timeout der Sitzung zu verhindern.
Sehen wir uns nun an, wie dieses Dienstprogramm unter Linux verwendet wird.
1) Neue Fenster aufrufen
Wenn der Bildschirmbefehl noch nicht auf Ihrem System vorhanden ist, können Sie ihn mit dem folgenden Befehl installieren.
Auf Debian
# apt-get install screen
Auf Centos
# yum install screen
Sie können den Bildschirm starten, indem Sie einfach an der Eingabeaufforderung screen eingeben. Dieser Bildschirmbefehl startet ein neues Fenster innerhalb des Bildschirms.
# screen
Sie können innerhalb des Bildschirms ein neues Fenster beginnen und dem Fenster auch einen Namen geben, zum Beispiel oben. Es erstellt eine Sitzung, die durch diesen Namen identifiziert wird. Der Name kann zu einem späteren Zeitpunkt wieder verwendet werden.
# screen -S aloft
Beachten Sie, dass Sie Ihre gesamte Arbeit wie in der normalen CLI-Umgebung erledigen können.
2) Alle Screen-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 Bildschirme anzuzeigen. Es listet alle vorhandenen Bildschirmsitzungen auf.
# screen -ls
There is a screen on:
10437.aloft (Attached)
1 Socket in /var/run/screen/S-root.
3) Hauptbefehl des Bildschirms
Es ist möglich, mit dem Bildschirm zu arbeiten, indem einige Befehle verwendet werden. Wir werden unten die wichtigsten Befehle auflisten, die nützlicher sind.
Ctrl-a
gefolgt vonc
:Neues Fenster erstellenCtrl-a
gefolgt vonw
:Liste aller aktuell geöffneten Fenster anzeigenCtrl-a
gefolgt vonA
:Benennen Sie die aktuellen Fenster um. Der Name erscheint, wenn Sie die Liste der mitCtrl-a
geöffneten Fenster auflisten gefolgt vonw
.Ctrl-a
gefolgt vonn
:gehe zum nächsten FensterCtrl-a
gefolgt vonp
:zum vorherigen Fenster wechselnCtrl-a
gefolgt von Strg-a:Zurück zu den zuletzt verwendeten Fenstern.Ctrl-a
gefolgt von einer Zahl von 0 bis X:Gehen Sie zum Fenster Nr. X.Ctrl-a
gefolgt von"
:Wählen Sie die Fenster aus, in die Sie wechseln möchten.Ctrl-a
gefolgt vonk
:Aktuelles Fenster schließen (kill)Ctrl-a
gefolgt vonS
:Teilt das aktuelle Fenster horizontal. Um zwischen den Fenstern zu wechseln, führen SieCtrl-a
aus gefolgt vonTab
.Ctrl-a
gefolgt von|
:Teilt das aktuelle Fenster vertikalCtrl-a
gefolgt vond
:Trennen Sie eine Bildschirmsitzung, ohne sie zu stoppenCtrl-a
gefolgt vonr
:fügen Sie eine getrennte Bildschirmsitzung wieder hinzuCtrl-a
gefolgt von[
:Kopiermodus startenCtrl-a
gefolgt von]
:kopierten Text einfügen
4) Bildschirmparameter anzeigen
Sie können alle Parameter des Bildschirms als Hilfe auflisten. Geben Sie dazu Ctrl-a
ein gefolgt von dem Zeichen ?
. Es wird eine Liste aller Befehle angezeigt.
5) Sitzung trennen
Der größte Vorteil des Bildschirmbefehls ist die Möglichkeit, eine Bildschirmsitzung zu trennen. Sie können eine Bildschirmsitzung auf einem Computer im Büro starten, die Sitzung vom lokalen Terminal trennen, nach Hause gehen, sich remote bei unserem Bürocomputer anmelden und die Bildschirmsitzung wieder mit dem Terminal unseres Heimcomputers verbinden. In der Zwischenzeit wurden alle Jobs auf Ihrem Bürocomputer weiter ausgeführt. Diese Funktion wird verwendet, um den Datenverlust zu verhindern, der plötzlich während einer unterbrochenen SSH-Verbindung auftritt.
Um besser zu verstehen, wovon wir sprechen, lassen Sie uns ein Beispiel nehmen. Wir starten einen Installationsprozess.
Jetzt lösen wir den Bildschirm mit Ctrl-a
gefolgt von d
. Wir können dies mit dem folgenden Befehl überprüfen.
# screen -ls
There is a screen on:
12449.win (Detached)
1 Socket in /var/run/screen/S-root.
Es ist möglich, den Bildschirm mit screen -d
abzutrennen Befehl gefolgt von der Bildschirm-ID oder ihrem Namen. Dies bedeutet, dass Sie ein anderes Fenster oder eine andere Konsole öffnen müssen, um die Sitzung zu trennen, wenn auf der aktuellen Konsole ein Prozess ausgeführt wird. Sie müssen zuerst den aktuell angeschlossenen Bildschirm auflisten.
# screen -ls
There is a screen on:
13686.win200 (Attached)
1 Socket in /var/run/screen/S-root.
Geben Sie nun auf 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 getrennt wurde.
[remote detached from 13686.win200]
6) Eine Sitzung erneut anhängen
Nachdem Sie den Bildschirm abgenommen haben, können Sie ihn mit dem Befehl wieder anbringen. Normalerweise funktioniert Ihre Bildschirmsitzung noch, sodass nicht alle Ihre Prozesse gestoppt werden. Bevor Sie eine Sitzung erneut hinzufügen, müssen Sie die Sitzung wie oben beschrieben auflisten und dann die Sitzung auswählen, die erneut hinzugefügt werden soll.
# screen -r 13686
oder Sie können
verwenden# screen -r win200
Sie können sehen, dass nach dem erneuten Verbinden der Sitzung die Fenster das Ende des abgeschlossenen Vorgangs anzeigen. Das bedeutet, dass Sie über ssh arbeiten und eine Sitzung trennen können, die Sie zu Hause wieder anhängen, um Ihren Arbeitsprozess fortzusetzen, ohne etwas zu verlieren.
7) Erstellen Sie eine neue interaktive Shell
Wenn Sie einige Aufgaben zu erledigen haben und Ihre Arbeit nicht verlieren möchten, können Sie eine neue interaktive Shell erstellen. Sie können problemlos einige interaktive Shells (nummeriert von 0 bis X) in einem Terminalfenster öffnen. Wenn Sie eine neue Sitzung starten, befinden Sie sich in Shell 0 .
Dazu müssen Sie mit Ctrl-a
neue Fenster innerhalb bestehender Fenster erstellen gefolgt von c
. Sie werden so etwas wie unten haben.
Sie können Bildschirm 3 sehen oben auf dem Screenshot, was anzeigt, dass wir uns auf dem dritten Bildschirm befinden. Unten sehen wir auch 3
8) Zwischen Bildschirmfenstern wechseln
Wenn Sie mehr als ein Bildschirmfenster geöffnet haben, drücken Sie Ctrl-a
, um zwischen den einzelnen Fenstern zu wechseln gefolgt von space
oder die Nummer der Schale. Um beispielsweise zu Shell Nummer 1 zu wechseln, drücken Sie Ctrl-a
dann 1
. Zum Beispiel bewegen wir uns auf dem ersten Bildschirm.
Der obere und untere Teil des Screenshots zeigt, dass wir uns auf dem ersten Bildschirm befinden.
9) Geteilte Fenster
Um eine globale Ansicht Ihrer Arbeit zu haben, müssen Sie Ihre Fenster möglicherweise aufteilen, anstatt mehrere Fenster zu haben. Ctrl-a
gefolgt von S
oder |
Teilen Sie Ihren Bildschirm horizontal oder vertikal. Der Vorgang kann unbegrenzt wiederholt werden. Um ein anderes 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 erstellen (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 Großbuchstaben handelt).
10) Verbinden Sie sich erneut mit einer getrennten SSH-Sitzung
Wenn Sie sich zum ersten Mal anmelden,
- Bildschirm ausführen, um eine Bildschirmsitzung zu starten. Du bekommst eine andere Shell, führe darin Befehle aus.
# screen -S remote_session
- Wenn Sie fertig sind, trennen Sie die Bildschirmsitzung und melden Sie sich bei ssh ab
[detached from 20995.remote_session]
- Sie können zuerst alle Bildschirmsitzungen auflisten
# screen -ls
There are screens on:
20995.remote_session (Detached)
14331.daby (Attached)
14134.mom (Detached)
3 Sockets in /var/run/screen/S-root.
- Verbinden Sie sich erneut mit Ihrer Bildschirmsitzung und setzen Sie Ihre Arbeit fort
# screen -d -r remote_ression
Der Bildschirmbefehl wird am häufigsten für SSH-Sitzungen verwendet, da er Ihnen hilft, Ihre Arbeit nach einer Verbindungsunterbrechung fortzusetzen, ohne dass die laufenden Prozesse verloren gehen.
11) In Bildschirmfenstern nach oben scrollen
Da screen die Verwaltung Ihrer Remote-Programme übernimmt, können Sie die Bildlauffunktionen Ihres Terminalemulators nicht verwenden, während Sie screen ausführen. Sie müssen die Screen-Befehle verwenden, um auf den Scrollback-Puffer zuzugreifen.
- Verwenden Sie
Ctrl-a
gefolgt vonescape
- Drücken Sie
Up
undDown
Pfeiltasten oderPgUp
undPgDn
Tasten, um durch die vorherige Ausgabe zu blättern.
Sie können sehen, wo mein Cursor auf dem Screenshot ist. Jedes virtuelle Terminal hat seinen eigenen Scrollback-Puffer.
12) Sehen Sie sich den Eigentümer jeder Bildschirmsitzung an
Der screen -ls
oder screen -list
Befehle zeigen Ihnen nur Ihre eigenen Bildschirmsitzungen, selbst für Root. Soweit ich weiß, ist das das Beste für den Bildschirm selbst.
Wenn Sie sehen möchten, welche Bildschirmsitzungen von welchen Benutzern gestartet wurden, sehen Sie in den einzelnen Benutzerverzeichnissen in /var/run/screen/
nach .
# ls -lR /var/run/screen
/var/run/screen:
total 0
drwx------ 2 patrick patrick 60 Jun 17 20:47 S-patrick
drwx------ 2 root root 100 Jun 17 19:39 S-root
/var/run/screen/S-patrick:
total 0
srwx------ 1 patrick patrick 0 Jun 17 20:47 21941.pat_session
/var/run/screen/S-root:
total 0
srw------- 1 root root 0 Jun 9 16:45 14134.mom
srwx------ 1 root root 0 Jun 9 01:07 14331.daby
srwx------ 1 root root 0 Jun 17 20:46 20995.remote_session
13) Teilen einer Bildschirmsitzung mit einem Konto
Sie können zwei Personen von entfernten Standorten aus bei demselben Konto anmelden. Sie können ganz einfach eine Bildschirmsitzung teilen (also was der eine tippt, sieht der andere und umgekehrt). Dazu:
- Erstellen Sie eine benannte Bildschirmsitzung:
# screen -d -m -S share_session
- An die Bildschirmsitzung in Ihrem Terminalfenster anhängen
# screen -x share_session
- Lassen Sie die andere Person (eingeloggt im selben Konto) ebenfalls an der Bildschirmsitzung teilnehmen
# screen -x share_session
Sie haben genau die gleiche Ausgabe, die an der anderen Stelle angezeigt wird. Alles, was auf Ihrem Terminal erscheint, erscheint auch auf dem Terminal des anderen Benutzers.
14) Sperrbildschirmsitzung
Es ist möglich, die Bildschirmsitzung zu sperren, ohne den Benutzer der normalen Sitzung zu sperren. Das bedeutet, dass Sie Ihren Computer verlassen 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 Kleinbuchstaben handelt).
Screen used by root <root> on centos-01.
Password:
15) Bildschirmsitzung beenden
Wenn Sie fertig sind und die Bildschirmsitzung beenden möchten, können Sie den Befehl Ctrl-a
verwenden gefolgt von k
. Sie werden zur Bestätigung aufgefordert.
Sie können auch den Exit-Befehl verwenden. Wenn Sie Ihren laufenden Prozess speichern möchten, können Sie Ihre Bildschirmsitzung einfach trennen, bevor Sie die Sitzung beenden.
Schlussfolgerung
Das Bildschirmdienstprogramm kann ein Fenster auf Aktivität oder Inaktivität überwachen. Dies ist großartig, wenn Sie große Dateien herunterladen, kompilieren oder auf die Ausgabe warten. Zu diesem Zeitpunkt können Sie bei Bedarf sogar einen Prozess von einem Computer aus mit dem Bildschirmbefehl starten und ihn trennen, wenn Sie fertig sind.