- Dave McKay
@TheGurkha
- March 27, 2020, 8:00 Uhr EDT
Mit dem Linux-Befehl screen
können Sie laufende Terminalanwendungen in den Hintergrund schieben und nach vorne ziehen, wenn Sie sie sehen wollen. Es unterstützt auch geteilte Bildschirmanzeigen und funktioniert über SSH-Verbindungen, sogar nachdem Sie die Verbindung getrennt und wieder hergestellt haben!
Was ist der screen-Befehl?
Der screen
-Befehl ist ein Terminal-Multiplexer, und er ist absolut vollgepackt mit Optionen. Zu sagen, dass er eine Menge kann, ist die größte Untertreibung. Die Manpage umfasst über 4.100 Zeilen.
Das Folgende sind die häufigsten Fälle, in denen Sie den screen
-Befehl verwenden, und wir werden diese in diesem Artikel weiter behandeln:
- Die Standardoperation ist es, ein neues Fenster mit einer Shell darin zu erzeugen, einen Befehl auszuführen und dann das Fenster in den Hintergrund zu schieben (was „Ablösen“ genannt wird). Wenn Sie sehen wollen, wie sich Ihr Prozess verhält, können Sie das Fenster wieder in den Vordergrund ziehen („reattach“) und es erneut verwenden. Das ist großartig für lange Prozesse, die Sie nicht versehentlich durch Schließen des Terminalfensters beenden wollen.
- Sobald Sie eine
screen
-Sitzung laufen haben, können Sie neue Fenster erstellen und andere Prozesse darin laufen lassen. Sie können einfach zwischen den Fenstern hin- und herspringen, um deren Fortschritt zu überwachen. Sie können Ihr Terminalfenster auch in vertikale oder horizontale Bereiche aufteilen und Ihre verschiedenenscreen
-Fenster in einem Fenster anzeigen. - Sie können eine Verbindung zu einem entfernten Rechner herstellen, eine
screen
-Sitzung starten und einen Prozess starten. Sie können die Verbindung zum entfernten Rechner trennen, sich erneut verbinden und Ihr Prozess läuft immer noch. - Sie können eine
screen
-Sitzung für zwei verschiedene SSH-Verbindungen freigeben, so dass zwei Personen dasselbe sehen können, in Echtzeit.
Screen installieren
Um screen
auf Ubuntu zu installieren, verwenden Sie diesen Befehl:
sudo apt-get install screen
Um screen
auf Manjaro zu installieren, verwenden Sie den folgenden Befehl:
sudo pacman -Sy screen
Unter Fedora geben Sie Folgendes ein:
sudo dnf install screen
Einstieg in screen
Zum Starten geben Sie screen
einfach wie unten gezeigt ein und drücken die Eingabetaste:
screen
Sie sehen eine Seite mit Lizenzinformationen. Sie können die Leertaste drücken, um die zweite Seite zu lesen, oder die Eingabetaste, um zur Eingabeaufforderung zurückzukehren.
Sie bleiben bei der Eingabeaufforderung, und es scheint nicht viel passiert zu sein. Allerdings führen Sie jetzt eine Shell in einem gemultiplexten Terminalemulator aus. Warum ist das eine gute Sache? Nun, lassen Sie uns einen Prozess starten, der lange dauern wird. Wir laden den Quellcode für den neuesten Linux-Kernel herunter und leiten ihn in eine Datei namens latest_kernel.zip
um.
Um das zu tun, geben wir Folgendes ein:
curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip
Unser Download beginnt, und die curl
Ausgabe zeigt uns den Fortschritt.
Wir können Ihnen kein Bild des nächsten Teils zeigen, da es sich um eine Tastenkombination handelt. Sie geben Strg+A ein, lassen diese Tasten los und drücken dann d, um den Bildschirm zu lösen.
Der Download-Prozess läuft noch, aber das Fenster, das den Download anzeigt, wird entfernt. Sie kehren zu dem Terminalfenster zurück, von dem aus Sie die screen
-Sitzung gestartet haben. Eine Meldung teilt Ihnen mit, dass ein screen
-Fenster mit der Bezeichnung 23167.pts-0.howtogeek
abgetrennt wurde.
Sie benötigen die Nummer am Anfang des Fensternamens, um es wieder anzuhängen. Wenn Sie sie vergessen haben, können Sie immer die Option -ls
(Liste) verwenden, wie unten gezeigt, um eine Liste der abgetrennten Fenster zu erhalten:
screen -ls
Wenn Sie bereit sind, können Sie die Option -r
(reattach) und die Nummer der Sitzung verwenden, um sie wieder zu verbinden, etwa so:
screen -r 23167
Das Fenster, das im Hintergrund gearbeitet hat, wird nun in Ihr Terminalfenster zurückgebracht, als wäre es nie weg gewesen.
Wenn es sich um einen Prozess handelt, der bis zu seinem Ende durchläuft, wird er schließlich abgeschlossen. Wenn es ein fortlaufender Prozess ist, werden Sie ihn irgendwann beenden wollen. So oder so, wenn der Prozess endet, können Sie exit
eingeben, um das screen
zu beenden. Alternativ können Sie auch Strg+A und dann K drücken, um ein Fenster gewaltsam zu beenden.
Tippen Sie folgenden Befehl ein:
exit
Sie kehren zu Ihrem vorherigen Terminal-Fenster zurück, das immer noch den Befehl anzeigt, mit dem Sie das Fenster wieder angehängt haben. Da wir unser einziges abgetrenntes Fenster geschlossen haben, erhalten wir eine Meldung, dass screen
beendet wird.
Verbunden: How to Use curl to Download Files From the Linux Command Line
Using Named screen Sessions
Sie können die Option -S
(Sitzungsname) verwenden, um Ihre screen
Sitzung zu benennen. Wenn Sie einen einprägsamen Namen anstelle der numerischen Identität der Sitzung verwenden, ist es bequemer, sich wieder mit einer Sitzung zu verbinden. Wir geben Folgendes ein, um unsere Sitzung „bigfile“ zu nennen:
screen -S bigfile
Wenn screen
unsere Sitzung startet, sehen wir ein leeres Fenster mit einer Eingabeaufforderung. Wir werden eine große Datei herunterladen, also können wir einen lang laufenden Prozess als Beispiel verwenden.
Wir geben Folgendes ein:
curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip
Wenn der Download beginnt, drücken wir Strg+A und dann D, um die Sitzung zu lösen. Wir geben Folgendes ein, um mit -ls
(Liste) die Details unserer abgetrennten Sitzung anzuzeigen:
screen -ls
Hinter der numerischen Kennung (23266) sehen wir den Namen unserer Sitzung (bigfile). Wir geben Folgendes ein, einschließlich des Namens der Sitzung, um sie wieder zu verbinden:
screen -r bigfile
Wir sind wieder mit unserem Download-Fenster verbunden und sehen, dass der lange Download immer noch im Gange ist.
Wenn der Download abgeschlossen ist, geben wir exit
ein, um das Sitzungsfenster zu schließen.
Screen mit mehreren Fenstern verwenden
Bislang haben wir screen
verwendet, um einen einzelnen Prozess in einem abgetrennten Fenster in den Hintergrund zu stellen. Das screen
kann aber noch viel mehr als das. Als Nächstes werden wir ein paar Prozesse starten, die es uns ermöglichen, einige Aspekte unseres Computers zu überwachen.
Wir geben Folgendes ein, um eine Bildschirmsitzung namens „monitor“ zu starten:
screen -S monitor
An der Eingabeaufforderung in unserer neuen Fenstersitzung starten wir dmesg
und verwenden die Optionen -H
(von Menschen lesbar) und -w
(auf neue Nachrichten warten). Damit werden die Kernel-Puffer-Meldungen angezeigt; neue Meldungen erscheinen, sobald sie auftreten.
Wir geben Folgendes ein:
dmesg -H -w
Die vorhandenen Meldungen erscheinen. Wir kehren nicht zur Eingabeaufforderung zurück, da dmseg
auf neue Nachrichten wartet und diese anzeigt, sobald sie eintreffen.
Verbunden: Wie man den dmesg-Befehl unter Linux verwendet
Wir wollen eine andere Anwendung ausführen, also brauchen wir ein neues screen
-Fenster. Wir drücken Strg+A und dann C, um ein neues Fenster zu erstellen. Wir werden watch
verwenden, um vmstat
wiederholt auszuführen, damit wir eine häufig aktualisierte Anzeige der Nutzung des virtuellen Speichers auf unserem Computer erhalten.
An der neuen Eingabeaufforderung geben wir Folgendes ein:
watch vmstat
Die vmstat
Ausgabe erscheint und aktualisiert sich alle zwei Sekunden.
Unsere beiden Prozesse laufen jetzt. Um zwischen den screen
Fenstern zu springen, drücken Sie Strg+A und die Nummer des Fensters. Das erste, das wir angelegt haben, ist Fenster Null (0), das nächste ist Fenster 1, und so weiter. Um zum ersten Fenster (dem dmesg
) zu springen, drücken wir Strg+A und 0.
Wenn wir Strg+A und 1 drücken, bringt uns das zurück zum vmstat
-Fenster.
Das ist ziemlich raffiniert! Wir können Strg+A und dann D drücken, um uns von dieser Sitzung zu trennen; wir können uns später wieder verbinden. Beide Sitzungen werden weiterhin ausgeführt. Um zwischen den Fenstern zu wechseln, drücken wir wieder Strg+A und die Nummer (0 oder 1) des Fensters, zu dem wir wechseln wollen.
Lassen Sie uns zum nächsten Schritt übergehen und beide Bildschirme in einem Fenster anzeigen. Wenn Sie das tun, dehnen Sie Ihr Terminalfenster auf eine Größe, die diesen Schritt sinnvoll macht. Unsere Beispiele sind auf die Größe unserer Screenshots beschränkt, daher werden unsere Fenster etwas beengt aussehen.
Um dies zu tun, drücken wir Strg+A und dann Umschalt+S (ein großes „S“ ist erforderlich).
Das Fenster teilt sich in zwei „Bereiche“.“
Der obere Bereich zeigt noch vmstat
, und der untere Bereich ist leer. Der Cursor ist im unteren Screenshot hervorgehoben. Um ihn in den unteren Bereich zu verschieben, drücken wir Strg+A und dann die Tabulatortaste.
Der Cursor bewegt sich in den unteren Bereich, der eigentlich nur ein leerer Raum ist. Es ist keine Shell, also können wir dort nichts eintippen. Um eine brauchbare Anzeige zu erhalten, drücken wir Strg+A und dann „0“, um das dmesg
-Fenster in dieser Region anzuzeigen.
Dadurch erhalten wir beide Live-Ausgaben in einem geteilten Fenster. Wenn wir Strg+A und D drücken, um das Fenster abzutrennen, und es dann wieder anhängen, verlieren wir die Ansicht des geteilten Fensters. Wir können sie jedoch mit den folgenden Tastenkombinationen wiederherstellen:
- Strg+A, S: Das Fenster horizontal teilen.
- Strg+A, Tab: In den unteren Bereich verschieben.
- Strg+A, 0: Fenster-Null im unteren Bereich anzeigen.
Wir können noch einen Schritt weiter gehen. Wir teilen jetzt den unteren Bereich vertikal auf und fügen einen dritten Prozess zur Anzeige hinzu. Mit dem Cursor im unteren Bereich drücken wir Strg+A und C, um ein neues Fenster mit einer Shell darin zu erstellen. Der untere Bereich zeigt das neue Fenster an und gibt uns eine Eingabeaufforderung.
Als Nächstes führen wir den df
-Befehl aus, um die Nutzung des Dateisystems zu prüfen:
df
Wenn wir sehen, dass df
läuft, drücken wir Strg+A und das Pipe-Zeichen (|)
. Dadurch wird der untere Bereich vertikal geteilt. Wir drücken Strg+A und Tab, um in den neuen Bereich zu wechseln. Als Nächstes drücken wir Strg+A und 0, um das Fenster dmesg
anzuzeigen.
Sie können sich auch von Region zu Region bewegen und weitere vertikale oder horizontale Teilungen hinzufügen. Hier sind einige weitere nützliche Tastenkombinationen:
- Strg+A: Springt zwischen der aktuellen und der vorherigen Region hin und her.
- Strg+A, Q: Schließt alle Regionen außer der aktuellen.
- Strg+A, X: Den aktuellen Bereich schließen.
Benutzung des Bildschirms über SSH
Mit screen
können Sie eine Fenstersitzung starten, sie abkoppeln, sodass sie noch im Hintergrund läuft, sich ab- oder wieder anmelden und die Sitzung wieder ankoppeln.
Lassen Sie uns mit dem ssh
-Befehl eine SSH-Verbindung von einem anderen Computer zu unserem herstellen. Wir müssen den Namen des Kontos, mit dem wir uns verbinden wollen, und die Adresse des entfernten Computers angeben.
Für unser Beispiel geben wir Folgendes ein:
ssh [email protected]
Nachdem wir uns am entfernten Computer authentifiziert und angemeldet haben, geben wir Folgendes ein, um eine screen
Sitzung namens „ssh-geek“ zu starten:
screen -S ssh-geek
Zu Demonstrationszwecken führen wir top
im screen
-Fenster aus, aber Sie könnten jeden beliebigen langlaufenden oder endlosen Prozess starten.
Wir geben Folgendes ein:
top
Wenn top
in dem Fenster läuft, drücken wir Strg+A und dann D, um das Fenster zu lösen.
Wir kehren zum ursprünglichen, entfernten Terminalfenster zurück.
Wenn wir exit
eingeben, wie unten gezeigt, wird die SSH-Sitzung getrennt und wir sind wieder auf unserem lokalen Computer:
exit
Wir geben Folgendes ein, um die Verbindung wiederherzustellen:
ssh [email protected]
Nachdem wir wieder verbunden und eingeloggt sind, können wir Folgendes eingeben, um die screen
Sitzung wieder zu verbinden:
screen -r ssh-geek
Wir sind jetzt wieder mit unserer noch laufenden Instanz von top
verbunden.
Dies ist großartig, wenn Sie einen Prozess auf einem Rechner starten und dann auf einem anderen dort weitermachen wollen, wo Sie aufgehört haben.
Verbunden: How to Create and Install SSH Keys From the Linux Shell
Sharing a screen Session
Sie können auch eine screen
-Sitzung verwenden, damit zwei Personen dasselbe Fenster sehen und mit ihm interagieren können. Nehmen wir an, jemand, auf dessen Computer Fedora läuft, möchte sich mit unserem Ubuntu-Server verbinden.
Er würde Folgendes eingeben:
ssh [email protected]
Nachdem er eine Verbindung hergestellt hat, startet er eine Bildschirmsitzung namens „ssh-geek“ mit der Option -S (Sitzungsname). Außerdem verwendet er die Optionen -d
(abtrennen) und -m
(erzwingen), um eine neue screen
Sitzung zu erstellen, die bereits abgetrennt ist.
Er gibt Folgendes ein:
screen -d -m -S ssh-geek
Er tippt Folgendes ein, wobei er die Option -X
(Multiscreen-Modus) verwendet, um die Sitzung anzuhängen:
screen -X ssh-geek
Auf einem Manjaro-Computer verbindet sich eine andere Person mit denselben Zugangsdaten mit dem Ubuntu-Computer, wie unten gezeigt:
ssh [email protected]
Wenn sie verbunden ist, tippt sie den screen
-Befehl und verwendet die Option -X (Mehrbildschirmmodus), um der gleichen Fenstersitzung beizutreten, etwa so:
screen -X ssh-geek
Jetzt wird alles, was eine der beiden Personen eingibt, von der anderen gesehen. Wenn zum Beispiel eine Person den Befehl „date“ eingibt, sehen beide sowohl die Eingabe als auch die Ausgabe.
Beide Personen teilen sich jetzt eine screen
-Sitzung, die auf einem entfernten Ubuntu-Computer läuft.
Für ein Stück Software, das 1987 das Licht der Welt erblickte, ist screen
immer noch ein guter Produktivitätshieb. Sich damit vertraut zu machen, ist gut investierte Zeit!
Verbunden: 37 wichtige Linux-Befehle, die Sie kennen sollten
Dave McKay hat zum ersten Mal Computer benutzt, als Lochstreifen in Mode waren, und seitdem programmiert er. Nach über 30 Jahren in der IT-Branche ist er nun hauptberuflich Technologie-Journalist. Während seiner Karriere arbeitete er als freiberuflicher Programmierer, Manager eines internationalen Software-Entwicklungsteams, Projektmanager für IT-Services und zuletzt als Datenschutzbeauftragter. Dave ist ein Linux-Evangelist und Open-Source-Befürworter.Read Full Bio “