15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
08.10.2024

Der vollständige Leitfaden zu GNU Screen-Befehlen in Linux

GNU Screen ist ein Terminal-Multiplexer, der es Ihnen ermöglicht, mehrere Shell-Sitzungen in einem einzigen Terminalfenster zu erstellen, zu verwalten und beizubehalten. Wenn Sie sich von einer Screen-Sitzung trennen, wird jeder darin laufende Prozess weiter ausgeführt – er übersteht SSH-Verbindungsabbrüche, Netzwerkausfälle und Terminal-Schließungen – und ist in dem Moment, in dem Sie sich wieder verbinden, vollständig zugänglich.

Für alle, die Remote-Server über SSH verwalten, beseitigt diese eine Funktion eine ganze Klasse von Betriebsrisiken: Ein unterbrochener Verbindungsaufbau beendet nicht mehr eine laufende Datenbankmigration, einen mehrstündigen Kompilierungsvorgang oder einen aktiven Log-Überwachungsprozess.

Warum GNU Screen in der modernen Linux-Administration relevant bleibt

Tools wie tmux haben an Popularität gewonnen, aber Screen wird als Standard- oder Beinahe-Standard-Paket auf praktisch jeder Enterprise-Linux-Distribution und jedem minimalen Server-Image ausgeliefert. Wenn Sie sich per SSH in einen Bare-Metal-Rechner oder eine frisch bereitgestellte VPS Hosting-Instanz einloggen, ist Screen fast immer ohne zusätzliche Installation verfügbar. Sein geringer Speicherbedarf und die POSIX-Konformität machen es zur pragmatischen Wahl in eingeschränkten oder gesperrten Umgebungen.

Kernfunktionen auf einen Blick:

  • Sitzungspersistenz: Prozesse überleben Terminaltrennungen, SSH-Timeouts und clientseitige Abstürze
  • Fenster-Multiplexing: Mehrere unabhängige Shell-Fenster innerhalb einer einzigen Sitzung
  • Sitzungsfreigabe: Zwei Benutzer können sich gleichzeitig mit derselben Sitzung verbinden, um gemeinsam zu debuggen
  • Serieller Konsolenzugriff: Screen kann sich direkt mit `/dev/ttyS*`-Geräten für die Out-of-Band-Serververwaltung verbinden
  • Skriptbarer Start: Die Konfigurationsdatei `.screenrc` ermöglicht vollständig automatisierte Multi-Fenster-Umgebungen beim Start

GNU Screen vs. tmux: Den richtigen Multiplexer wählen

Beide Tools lösen dasselbe Kernproblem, jedoch mit unterschiedlichen Designphilosophien. Die folgende Tabelle zeigt die Unterschiede, die in Produktionsumgebungen relevant sind.

FunktionGNU Screentmux
StandardverfügbarkeitAuf den meisten Distros vorinstalliertErfordert explizite Installation
Konfigurationsdatei`~/.screenrc``~/.tmux.conf`
Bereichsaufteilung (horizontal/vertikal)Eingeschränkt (nur vertikal über Bereiche)Vollständige, flexible Bereichsaufteilung
SitzungsfreigabeNatives Multi-AttachNatives Multi-Attach
Skripting / Automatisierung`screen -X`-Befehlsinjektion`tmux send-keys`, umfangreiche API
SpeicherbedarfSehr geringGering
Unterstützung serieller GeräteJa (`screen /dev/ttyS0`)Nein
Statusleisten-AnpassungModerat (hardstatus)Sehr flexibel
Kopiermodusvi-Stilvi- oder emacs-Stil
Plugin-ÖkosystemKeinesAktiv (TPM)
Idealer AnwendungsfallMinimale Server, serielle Konsolen, Legacy-UmgebungenEntwickler-Workstations, komplexe Layouts

Praktische Empfehlung: Auf einem Headless-Dedicated Server, der langfristige Hintergrundjobs ausführt, macht Screens Einfachheit und universelle Verfügbarkeit es zur reibungsloseren Wahl. Für einen Entwickler, der geteilte Bereiche und eine umfangreiche Statusleiste benötigt, gewinnt tmux.

GNU Screen installieren

Screen ist auf den meisten Distributionen vorinstalliert. Überprüfen Sie dies mit:

“`bash

screen –version

“`

Falls es fehlt, installieren Sie es mit dem entsprechenden Paketmanager:

Debian / Ubuntu:

“`bash

sudo apt-get update && sudo apt-get install screen

“`

CentOS / RHEL 7:

“`bash

sudo yum install screen

“`

CentOS Stream / RHEL 8+ / AlmaLinux / Rocky Linux:

“`bash

sudo dnf install screen

“`

Fedora:

“`bash

sudo dnf install screen

“`

Arch Linux:

“`bash

sudo pacman -S screen

“`

Alpine Linux (häufig in Containern):

“`bash

apk add screen

“`

Nach der Installation ist kein Daemon oder Dienst erforderlich. Screen läuft vollständig als User-Space-Prozess.

Eine Screen-Sitzung starten

Einfache Sitzung

“`bash

screen

“`

Dies öffnet eine neue Sitzung mit einer Standard-Shell. Die Oberfläche ist von einem normalen Terminal nicht zu unterscheiden, bis Sie Screens Befehlspräfix verwenden.

Benannte Sitzung (empfohlen)

“`bash

screen -S session_name

“`

Benennen Sie Ihre Sitzungen in der Produktion immer. Unbenannte Sitzungen werden nur durch ihre PID identifiziert, was die Wiederverbindung fehleranfällig macht, wenn mehrere Sitzungen laufen.

Tipp zur Namenskonvention: Verwenden Sie beschreibende Namen, die die Arbeitslast widerspiegeln – `screen -S db-migration`, `screen -S log-monitor`, `screen -S build-php82`. Das zahlt sich aus, wenn Sie nach stundenlanger Abwesenheit zu einem Server zurückkehren.

Eine Sitzung starten und sofort einen Befehl ausführen

“`bash

screen -S backup-job bash -c 'rsync -avz /data/ user@remote:/backup/ && echo DONE'

“`

Die Sitzung bleibt auch nach Abschluss des Befehls bestehen, sodass Sie die Ausgabe später einsehen können.

Eine Sitzung im getrennten Modus starten

“`bash

screen -dmS headless-job ./long_running_script.sh

“`

Die Flags `-dm` erstellen die Sitzung und trennen sie sofort. Dies ist das richtige Muster zum Starten von Hintergrundjobs aus Cron- oder Deployment-Skripten – der Prozess läuft innerhalb einer benannten, wiederherstellbaren Screen-Sitzung, ohne ein interaktives Terminal zu benötigen.

Das Befehlspräfix: Ctrl+A verstehen

Jede Screen-Tastenkombination beginnt mit der Escape-Sequenz `Ctrl+A`. Dieser Tastendruck teilt Screen mit, dass das nächste Zeichen ein Befehl ist und keine Eingabe für das laufende Programm. Das Verständnis dieses Modells ist wesentlich, bevor man einzelne Tastenkombinationen auswendig lernt.

Wenn Sie ein Programm innerhalb von Screen ausführen, das selbst `Ctrl+A` verwendet (zum Beispiel einige Texteditoren oder die `readline`-Bibliothek), können Sie ein wörtliches `Ctrl+A` an das innere Programm senden, indem Sie `Ctrl+A` zweimal drücken (`Ctrl+A, Ctrl+A`).

Sitzungen trennen und wieder verbinden

Von einer laufenden Sitzung trennen

“`

Ctrl+A, D

“`

Die Sitzung läuft weiterhin im Hintergrund. Sie werden zur übergeordneten Shell zurückgekehrt. Kein Prozess innerhalb der Sitzung wird unterbrochen.

Alle Sitzungen auflisten

“`bash

screen -ls

“`

Beispielausgabe:

“`

There are screens on:

14231.db-migration (Detached)

14089.log-monitor (Attached)

13901.build-php82 (Detached)

3 Sockets in /var/run/screen/S-deploy.

“`

Der Status `Attached` bedeutet, dass ein anderes Terminal derzeit mit dieser Sitzung verbunden ist. `Detached` bedeutet, dass sie läuft, aber kein Terminal verbunden ist.

Erneut mit einer bestimmten Sitzung verbinden

“`bash

screen -r db-migration

“`

Oder nach PID:

“`bash

screen -r 14231

“`

Erzwungenes Verbinden mit einer bereits verbundenen Sitzung

Wenn eine Sitzung `Attached` anzeigt, Sie sie aber übernehmen müssen (zum Beispiel nachdem eine veraltete SSH-Verbindung sie gesperrt hat):

“`bash

screen -d -r log-monitor

“`

Das Flag `-d` trennt die andere Verbindung zwangsweise, bevor Sie wieder verbunden werden. Dies ist eine wichtige Wiederherstellungstechnik, wenn eine vorherige SSH-Sitzung beendet wurde, ohne sich sauber zu trennen.

Multi-Attach: Zwei Benutzer in derselben Sitzung

“`bash

screen -x session_name

“`

Beide Terminals sehen in Echtzeit identische Ausgaben. Dies ist unschätzbar wertvoll für das gemeinsame Debuggen oder geführte Server-Walkthroughs mit einem Kollegen – beide Parteien beobachten und können mit derselben Shell interagieren.

Fenster innerhalb einer Sitzung verwalten

Eine einzelne Screen-Sitzung kann eine unbegrenzte Anzahl von Fenstern enthalten. Jedes Fenster ist eine unabhängige Shell (oder ein Prozess).

Ein neues Fenster erstellen

“`

Ctrl+A, C

“`

Zwischen Fenstern navigieren

TastenkombinationAktion
`Ctrl+A, N`Nächstes Fenster
`Ctrl+A, P`Vorheriges Fenster
`Ctrl+A, 0–9`Direkt zu Fenster nach Nummer springen
`Ctrl+A, "`Interaktive Liste aller Fenster
`Ctrl+A, '`Aufforderung zur Eingabe von Fensternummer oder -name

Ein Fenster umbenennen

“`

Ctrl+A, A

“`

Geben Sie den neuen Namen ein und drücken Sie Enter. Aussagekräftige Fensternamen werden in der Hardstatus-Leiste angezeigt, was die Navigation in Sitzungen mit vielen Fenstern erheblich beschleunigt.

Ein Fenster schließen

Geben Sie `exit` ein oder drücken Sie `Ctrl+D` in der Shell des Fensters. Wenn das letzte Fenster einer Sitzung geschlossen wird, wird die Sitzung beendet.

Den Screen in Bereiche aufteilen

Screen unterstützt die Aufteilung des Terminals in mehrere sichtbare Bereiche, von denen jeder gleichzeitig ein anderes Fenster anzeigt.

Horizontal aufteilen (oben/unten)

“`

Ctrl+A, S

“`

Vertikal aufteilen (links/rechts)

“`

Ctrl+A, |

“`

Hinweis: Die vertikale Aufteilung erfordert Screen 4.1.0 oder höher.

Zwischen Bereichen wechseln

“`

Ctrl+A, Tab

“`

Einem Bereich ein Fenster zuweisen

Nachdem Sie den Fokus auf einen Bereich verschoben haben, verwenden Sie `Ctrl+A, "`, um auszuwählen, welches Fenster dort angezeigt werden soll.

Einen Bereich entfernen

“`

Ctrl+A, X (remove current region)

Ctrl+A, Q (remove all regions except current)

“`

Wichtiger Unterschied: Das Entfernen eines Bereichs schließt nicht das darin laufende Fenster. Das Fenster läuft weiter; Sie hören lediglich auf, es in dieser Aufteilung anzuzeigen.

Kopieren und Einfügen (Scrollback-Modus)

Screen verwaltet für jedes Fenster einen Scrollback-Puffer. Um darauf zuzugreifen:

“`

Ctrl+A, [

“`

Dies aktiviert den Kopiermodus. Die Navigation erfolgt mit vi-Tasten:

  • `h`, `j`, `k`, `l` — Cursor bewegen
  • `Ctrl+F` / `Ctrl+B` — Seite vorwärts / rückwärts
  • `/` — Vorwärts suchen
  • `?` — Rückwärts suchen
  • `Space` — Anfang der Auswahl markieren
  • `Space` (erneut) — Ende markieren und in Puffer kopieren

Um den kopierten Text einzufügen:

“`

Ctrl+A, ]

“`

Der Standard-Scrollback-Puffer beträgt 100 Zeilen. Für die Server-Log-Überwachung sollten Sie diesen in `.screenrc` deutlich erhöhen (siehe unten).

Eine Screen-Sitzung sperren

“`

Ctrl+A, X

“`

Die Sitzung wird sofort gesperrt und fordert Ihr Unix-Benutzerpasswort an, bevor der Zugriff gewährt wird. Verwenden Sie dies, wenn Sie sich von einem Terminal entfernen, das mit einem sensiblen Server verbunden ist – es ist schneller als das Schließen der SSH-Verbindung und das erneute Verbinden.

Befehle an eine Sitzung senden, ohne sich zu verbinden

Das Flag `-X` ermöglicht es Ihnen, Screen-Befehle von außen in eine laufende Sitzung einzuschleusen:

“`bash

screen -S db-migration -X stuff "tail -f /var/log/mysql/error.logn"

“`

Der Befehl `stuff` sendet Tastendrücke an das aktive Fenster der benannten Sitzung. `n` simuliert das Drücken von Enter. Diese Technik wird in Deployment-Automatisierungsskripten verwendet, um mit lang laufenden Screen-Sitzungen zu interagieren, ohne dass eine manuelle Verbindung erforderlich ist.

Screen mit .screenrc konfigurieren

Die Datei `~/.screenrc` wird beim Start gelesen und steuert das Standardverhalten von Screen. Eine gut gestaltete `.screenrc` verwandelt Screen von einem einfachen Multiplexer in eine wirklich ergonomische Umgebung.

Erstellen oder bearbeiten Sie sie:

“`bash

nano ~/.screenrc

“`

Empfohlene .screenrc-Konfiguration für die Produktion

“`bash

Disable the startup message

startup_message off

Set scrollback buffer to 10,000 lines (critical for log monitoring)

defscrollback 10000

Enable UTF-8

defutf8 on

Set default shell

shell -$SHELL

Visual bell instead of audible

vbell on

Hardstatus bar: shows hostname, window list, and current time

hardstatus on

hardstatus alwayslastline

hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'

Bind F2 to create a new window

bindkey -k k2 screen

Change escape key to Ctrl+B (useful if Ctrl+A conflicts with other tools)

escape ^Bb

Auto-detach on hangup signal (critical for SSH session drops)

autodetach on

Disable flow control (prevents Ctrl+S from freezing the terminal)

defflow off

“`

Die Direktive `autodetach on` ist für die SSH-Nutzung unverzichtbar. Ohne sie kann Screen die Sitzung beenden, anstatt sie zu trennen, wenn Ihre SSH-Verbindung unerwartet abbricht (anstatt dass Sie `Ctrl+A, D` drücken). Mit `autodetach on` löst ein SIGHUP-Signal (das gesendet wird, wenn SSH die Verbindung trennt) eine saubere Trennung anstelle einer Sitzungsbeendigung aus.

`defflow off` verhindert die häufige Frustration, versehentlich `Ctrl+S` zu drücken und das Terminal scheinbar einzufrieren. Viele Administratoren verschwenden Minuten damit, ein „eingefrorenes” Terminal zu debuggen, das sich einfach in der XON/XOFF-Flusskontrollpause befindet.

Praktische Anwendungsfälle in der Produktion

Eine Datenbankmigration sicher ausführen

“`bash

screen -S db-migrate

Inside the session:

php artisan migrate –force 2>&1 | tee /var/log/migration-$(date +%F).log

Detach: Ctrl+A, D

Reattach later to check progress:

screen -r db-migrate

“`

Wenn die SSH-Verbindung während der Migration abbricht, läuft der Prozess weiter. Sie verbinden sich erneut und finden ihn entweder noch laufend oder abgeschlossen, mit vollständiger Ausgabe im Log und im Scrollback-Puffer.

Mehrere Log-Dateien gleichzeitig überwachen

“`bash

screen -S monitoring

Window 0: nginx access log

tail -f /var/log/nginx/access.log

Ctrl+A, C — new window

Window 1: application error log

tail -f /var/log/app/error.log

Ctrl+A, C — new window

Window 2: system messages

journalctl -f

“`

Navigieren Sie mit `Ctrl+A, "` zwischen den Fenstern, um zu sehen, welches Log Aktivität erzeugt.

Automatisiertes Deployment-Skript mit Screen

“`bash

#!/bin/bash

screen -dmS deploy bash -c '

git pull origin main &&

composer install –no-dev &&

php artisan config:cache &&

systemctl reload php8.2-fpm &&

echo "Deployment complete at $(date)" >> /var/log/deploy.log

'

echo "Deployment started in background screen session 'deploy'"

echo "Monitor with: screen -r deploy"

“`

Dieses Muster ist besonders nützlich auf einem VPS mit cPanel, wo Sie möglicherweise mehrere Anwendungs-Deployments von einer einzigen administrativen Shell aus verwalten.

Serieller Konsolenzugriff

“`bash

screen /dev/ttyS0 115200

“`

Screen fungiert auch als serieller Terminal-Emulator. Dies ist die Standardtechnik für den Zugriff auf die Konsole eines physischen Servers, eines Netzwerk-Switches oder eines eingebetteten Geräts über eine serielle Verbindung – ohne minicom oder picocom zu benötigen.

Häufige Fallstricke und wie man sie vermeidet

Verschachtelte Screen-Sitzungen: Wenn Sie von einer Screen-Sitzung auf Maschine A per SSH in Maschine B einloggen und dort Screen starten, haben Sie nun zwei Ebenen der `Ctrl+A`-Verarbeitung. Die innere Screen-Sitzung erfasst `Ctrl+A`, bevor die äußere es sieht. Um `Ctrl+A` an die äußere Sitzung zu senden, drücken Sie `Ctrl+A, Ctrl+A`. Um Verwirrung zu vermeiden, ändern Sie die Escape-Taste der inneren Sitzung in ihrer `.screenrc` mit `escape ^Bb`.

Tote Sitzungen werden nicht bereinigt: Wenn Screen abstürzt oder der Host unsauber neu startet, können Socket-Dateien in `/var/run/screen/` oder `~/.screen/` bestehen bleiben und Sitzungen als `Dead` anzeigen. Bereinigen Sie diese mit:

“`bash

screen -wipe

“`

Sitzung gehört root vs. Benutzer: Eine als root gestartete Screen-Sitzung kann nicht von einem Nicht-Root-Benutzer wieder verbunden werden und umgekehrt. Wenn Sie innerhalb einer Screen-Sitzung `sudo su` ausführen und sich dann trennen, verbinden Sie sich als root oder über `sudo screen -r` erneut.

Nichtübereinstimmung der `TERM`-Variable: Einige Anwendungen innerhalb von Screen verhalten sich falsch, weil `TERM` auf `screen` oder `screen-256color` anstatt auf `xterm-256color` gesetzt ist. Wenn eine TUI-Anwendung falsch dargestellt wird, überprüfen Sie dies mit `echo $TERM` und überschreiben Sie es in `.screenrc` mit `term xterm-256color` falls nötig.

Erschöpfung des Scrollback-Puffers: Der Standard-Scrollback von 100 Zeilen ist für jede ernsthafte Log-Überwachung unzureichend. Setzen Sie immer `defscrollback 10000` oder höher in `.screenrc` auf Servern, die für die aktive Administration verwendet werden.

Kurzreferenz: Wesentliche Screen-Befehle

AktionBefehl / Tastenkombination
Neue Sitzung starten`screen`
Benannte Sitzung starten`screen -S name`
Getrennte Sitzung starten`screen -dmS name`
Sitzungen auflisten`screen -ls`
Nach Name erneut verbinden`screen -r name`
Erzwungene Wiederverbindung`screen -d -r name`
Multi-Attach`screen -x name`
Trennen`Ctrl+A, D`
Neues Fenster`Ctrl+A, C`
Nächstes Fenster`Ctrl+A, N`
Vorheriges Fenster`Ctrl+A, P`
Fensterliste`Ctrl+A, "`
Fenster umbenennen`Ctrl+A, A`
Horizontal aufteilen`Ctrl+A, S`
Vertikal aufteilen`Ctrl+A,`
Zwischen Bereichen wechseln`Ctrl+A, Tab`
Kopier-/Scroll-Modus aktivieren`Ctrl+A, [`
Puffer einfügen`Ctrl+A, ]`
Sitzung sperren`Ctrl+A, X`
Aktuelles Fenster beenden`Ctrl+A, K`
Gesamte Sitzung beenden`Ctrl+A, `
Befehl an Sitzung senden`screen -S name -X stuff "cmdn"`
Tote Sitzungen bereinigen`screen -wipe`

Deployment-Kontext: Screen in verwalteten Hosting-Umgebungen

Screen arbeitet auf Shell-Ebene und ist daher mit jeder Linux-Umgebung kompatibel, auf die Sie SSH-Zugriff haben. Dies umfasst Bare-Metal-Server, Dedicated Server und Standard-VPS Hosting-Instanzen. Es ist nicht in Shared-Hosting-Umgebungen verfügbar, in denen der SSH-Zugriff eingeschränkt oder nicht vorhanden ist.

Für Workloads, die persistente Hintergrundverarbeitung beinhalten – wie GPU-beschleunigte Modellinferenz, die Vorverarbeitung großer Datensätze oder lang laufende Batch-Jobs – bietet die Kombination von Screen mit einer GPU Hosting-Umgebung sowohl die Rechenressourcen als auch die Sitzungspersistenz, die für die zuverlässige Verwaltung mehrstündiger Jobs erforderlich sind.

Wenn Ihre Infrastruktur webbasierte Dienste neben der Hintergrundverarbeitung umfasst, stellt die Kombination von Screen-verwalteten Backend-Jobs mit ordnungsgemäß gesicherten SSL-Zertifikaten auf Ihren öffentlichen Endpunkten sicher, dass der gesamte Stack – sowohl die sichtbare Anwendungsschicht als auch das administrative Backend – mit angemessenen Sicherheitskontrollen betrieben wird.

Entscheidungsmatrix: Wann Screen verwendet werden sollte

Verwenden Sie Screen, wenn:

  • Sie Sitzungspersistenz auf einem Server benötigen, auf dem nur Screen verfügbar ist
  • Sie auf eine serielle Konsole oder ein eingebettetes Gerät zugreifen
  • Sie einen einzelnen lang laufenden Prozess ausführen und keine geteilten Bereiche benötigen
  • Sie sich auf einem minimalen Alpine- oder BusyBox-basierten System befinden
  • Sie eine Sitzung in Echtzeit mit einem anderen Administrator teilen müssen

Ziehen Sie stattdessen tmux in Betracht, wenn:

  • Sie flexible horizontale und vertikale Bereichsaufteilung benötigen
  • Sie ein Plugin-Ökosystem für Statusleisten-Erweiterungen möchten
  • Sie eine Entwickler-Workstation-Umgebung mit komplexen Layouts aufbauen
  • Ihr Team auf tmux-Konfigurationsverwaltung standardisiert hat

Verwenden Sie keines von beiden (verwenden Sie stattdessen systemd oder supervisor), wenn:

  • Das Ziel ausschließlich darin besteht, einen Hintergrunddienst auszuführen, der Neustarts überleben soll
  • Sie keinen interaktiven Zugriff auf den laufenden Prozess benötigen
  • Der Prozess bei einem Fehler automatisch neu gestartet werden soll

Technische Schlüssel-Checkliste

Bevor Sie sich in einer Produktionsumgebung auf Screen verlassen, überprüfen Sie Folgendes:

  • `autodetach on` ist in `~/.screenrc` vorhanden – ohne es können SSH-Abbrüche Sitzungen beenden
  • `defscrollback` ist für log-intensive Workloads auf mindestens 5000 Zeilen gesetzt
  • `defflow off` ist gesetzt, um versehentliche `Ctrl+S`-Einfrierungen zu verhindern
  • Alle lang laufenden Sitzungen sind benannt (`-S flag`) – verlassen Sie sich nie auf die reine PID-Identifikation
  • Sie kennen den Wiederherstellungsbefehl `screen -d -r` für veraltete verbundene Sitzungen
  • Tote Sitzungs-Sockets werden regelmäßig mit `screen -wipe` bereinigt
  • Wenn Sie als mehrere Benutzer arbeiten, verstehen Sie die Eigentumsgrenze zwischen root- und Benutzersitzungen
  • Die Variable `TERM` wird überprüft, wenn TUI-Anwendungen innerhalb von Screen falsch dargestellt werden
  • Für vollständig automatisierte Hintergrundjobs wird `screen -dmS` anstelle von `nohup` oder bloßem `&` verwendet, was Ihnen eine wiederherstellbare, inspizierbare Sitzung gibt

FAQ

Überlebt GNU Screen einen Server-Neustart?

Nein. Screen-Sitzungen werden als Prozesse im Speicher gehalten. Ein vollständiger Server-Neustart beendet alle Screen-Sitzungen und ihre untergeordneten Prozesse. Für Prozesse, die Neustarts überleben müssen, verwenden Sie systemd-Units oder einen Prozess-Supervisor wie Supervisor. Screen ist das richtige Tool für interaktive Persistenz über Verbindungsabbrüche hinweg, nicht über Neustarts.

Was ist der Unterschied zwischen `screen -r` und `screen -x`?

`screen -r` verbindet sich erneut mit einer getrennten Sitzung – es schlägt fehl, wenn die Sitzung bereits anderswo verbunden ist. `screen -x` verbindet sich mit einer Sitzung unabhängig von ihrem aktuellen Verbindungsstatus und ermöglicht es zwei Terminals, dieselbe Sitzung gleichzeitig zu teilen. Verwenden Sie `-x` für gemeinsames Debuggen; verwenden Sie `-r` für die standardmäßige Wiederverbindung.

Wie scrolle ich in einem Screen-Fenster nach oben?

Aktivieren Sie den Kopiermodus mit `Ctrl+A, [`, dann verwenden Sie Pfeiltasten, `Page Up`/`Page Down`, oder vi-Navigationstasten (`Ctrl+F`, `Ctrl+B`). Drücken Sie `Escape` oder `q`, um den Kopiermodus zu verlassen. Stellen Sie sicher, dass `defscrollback` in `.screenrc` hoch genug gesetzt ist, um den benötigten Verlauf zu behalten.

Kann Screen ohne Root-Rechte verwendet werden?

Ja. Screen läuft vollständig als aufrufender Benutzer. Zum Erstellen, Verbinden oder Verwalten von Sitzungen sind keine Root-Rechte erforderlich. Die Socket-Dateien werden in einem benutzerspezifischen Verzeichnis gespeichert (typischerweise `/var/run/screen/S-username/`). Die einzige Ausnahme ist, wenn Screen selbst nicht installiert ist – die Installation erfordert Paketmanager-Zugriff, der typischerweise root oder sudo erfordert.

Warum zeigt meine Screen-Sitzung „Attached” an, obwohl niemand verbunden ist?

Dies geschieht typischerweise, wenn eine SSH-Verbindung abgebrochen ist, ohne ein sauberes SIGHUP zu senden – zum Beispiel aufgrund eines Netzwerk-Timeouts anstatt eines expliziten Abmeldens. Die Sitzung behält ihren `Attached`-Status, weil Screen das Trennungssignal nie erhalten hat. Verwenden Sie `screen -d -r session_name`, um die Geisterverbindung zwangsweise zu trennen und sich sauber erneut zu verbinden.

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen