Linux screen console on bash

Screen auf der Linux-Konsole benutzen

Mittels screen ist man unter Linux in der Lage – verbunden über Putty und eine lange Serverlaufzeit ohne Neustart vorausgesetzt – ein schier endloses Linuxleben in ein und der selben Konsole zu führen.

Dies hat den Vorteil, dass längere Befehlsausführungen in einer eigenen Sitzung laufen können ohne diese Verbindung dauerhaft aufrecht erhalten zu müssen. Auch führt eine gescheiterte Netzwerkverbindung nicht dazu, dass die gesamte Sitzung abgebrochen wird sondern lediglich die Verbindung zu der Screen-Sitzung.

Eine umfangreiche screen-Einstellung trägt dann auch noch dazu bei, alle bestehenden Sitzungen genau zu überblicken und zu verwalten. Dafür wird als erstes im Home-Verzeichnis die Datei .screenrc mit folgendem Inhalt erstellt:

# Abschalten des Splash-Screens bei Programmstart:
startup_message off
# Setzen des Puffers auf 2000 Zeilen
defscrollback 2000

# statuszeile fixieren
hardstatus alwayslastline
# grünes Schema - development
caption always "%{kg}%-w%{kG}%n %t%{-}%+w %="
hardstatus string "F1 Split | F2 Unsplit | F3 Tab Prev | F4 Tab Next     F5 New | F6 Title | F7 Prev | F8 Next     F9 Monitor | F10 Copy | F11 Paste | F12 Kill%=[%{kG} %H %{kW}][ %Y-%m-%d %c:%s ][ %l ]"

# gelbes Schema - staging
# caption always "%{ky}%-w%{kY}%n %t%{-}%+w %="
# hardstatus string "F1 Split | F2 Unsplit | F3 Tab Prev | F4 Tab Next     F5 New | F6 Title | F7 Prev | F8 Next     F9 Monitor | F10 Copy | F11 Paste | F12 Kill%=[ %{kY} %H %{kW}][ %Y-%m-%d %c:%s ][ %l ]"

# rotes Schema - production
# caption always "%{kr}%-w%{kR}%n %t%{-}%+w %="
# hardstatus string "F1 Split | F2 Unsplit | F3 Tab Prev | F4 Tab Next     F5 New | F6 Title | F7 Prev | F8 Next     F9 Monitor | F10 Copy | F11 Paste | F12 Kill%=[%{kR} %H %{kW}][ %Y-%m-%d %c:%s ][ %l ]"

# Funktions-Tasten verheiraten
bindkey -k k1 split
bindkey -k k2 remove
bindkey -k k3 focus up
bindkey -k k4 focus
bindkey -k k5 screen
bindkey -k k6 title
bindkey -k k7 prev
bindkey -k k8 next
bindkey -k k9 monitor
bindkey -k k; copy
bindkey -k F1 paste
bindkey -k F2 kill

# Überschreiben der Fenstergrösse festlegen
termcap xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
terminfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

Datei hier herunterladen

screen starten

Die Hauptsitzung startet man von nun an immer mit

screen -D -RR

um sodann eine neue Sitzung zu erstellen, wenn noch keine erzeugt wurde oder um mit einer bestehenden Sitzung zu verbinden, sofern man mit dieser noch nicht oder an einem anderen Stelle verbunden ist.

Funktionstasten

Über die oben vorgenommenen Einstellungen in der .screenrc werden die Funktionstasten F1-F12 genutzt um die Screensitzung zu verwalten.

Dabei werden die Tasten F1-F4 dazu verwendet um mehrere Bash-Sitzungen zur gleichen Zeit in den sichtbaren Bereich der Putty-Sitzung zu bringen. Die Tasten F5-F8 dienen der Verwaltung aller offenen Bash-Sitzungen. F9-F12 stehen der allgemeinen Verwaltung der Screensitzung und deren Funktionen.

Die vorletzte Zeile gibt einen Überblick über alle offenen bash-Sitzungen und markiert diejenige in welcher man sich gegenwärtig befindet.

Die unterste Zeile liefert stets einen Überblick darüber welche Tasten mit welchen Funktion verknüpft wurden, den Servernamen sowie Uhrzeit und Load. Diese sind mit den wichtigsten screen-Funktionen belegt um durch die Sitzungen zu navigieren und zu verwalten. Sie spiegeln die grundsätzlich benötigten Funktionalitäten wieder und haben sich in jahrelanger Praxis bewährt. In den man-pages von screen findet man noch quasi zahllose weitere Möglichkeiten Tastaturkommandos zu verknüpfen, die einem den Arbeitsalltag erleichtern kann. Dies kann sich jeder individuell einrichten und die hier aufgeführte Konfiguration kann gerne als Ausgangsbasis genutzt werden.

Einstellungen neu laden

Ich habe sehr lange mit den screen-Einstellungen rumprobiert bis ich die hier vorliegenden Einstellungen und Anzeigeeigenschaften definiert habe. Damit für den Reload von geänderten Einstellungen die screen-Sitzung nicht komplett neu gestartet werden muss kann man sich nachfolgenden Befehl in der screen-Konsole zu Nutze machen:

Ctrl + a + : source /home/[USERNAME]/.screenrc

Verbindung mittels Putty

Mit den nachfolgenden Putty-Einstellungen, welche nicht standardmäßig gesetzt sind und in einem separaten Profil dauerhaft gespeichert werden müssen, kann bei Wiederverbindung ohne gesonderte Eingaben an einer bestehenden screen-Sitzung weitergearbeitet werden:

  • Terminal-Keyboard
    • The Functionskeys and keypad: Xterm R6
  • Window
    • Columns: 200
    • Rows: 50
  • Window – Behaviour
    • Window title: %Taskbar-titel-unter-Windows%
    • Option Warn before closing window abwählen
    • Option Window closes on ALT-F4 setzen
  • Window – Translation
    • Remote character set: UTF-8
  • Connection – Data:
    • Autlogin: %USERNAME%
  • Connection – SSH:
    • Remote-command: screen -D -RR
  • Connection – SSH – Auth:
    • Choose your private-Key [%Privatekey, falls vorhanden%]
      -> Alternativ kann auch mittels Pageant der private-key übertragen werden.

Troubleshooting

Screen nicht detached

Sollte mal die Verbindung aufgrund eines Leitungsverlustes einmal verloren haben und die Sitzung nicht vernünftig ausgehangen(detached) worde sein so wird bei der Wiederverbindung mit Putty stets eine neue Hauptsitzung gestartet. Um dieses zu lösen kann man mit den Befehl

screen -ls

zunächst eine Liste der offenen Sitzungen ausgeben lassen um dann mit folgenden Befehl die Sitzung zu trennen:

screen -d [Sitzungsname]

Damit wird die bestehende Verbindung getrennt und man kann sich wieder wie gewohnt via

screen -R

mit der verloren gegangenen Sitzung wiederverbinden.

Dies geschieht jedoch nicht mit dem Befehl

screen -D -RR

Dieser versucht hingegen eine vorhandene Sitzung abzumelden und sich mit dieser erneut zu verbinden. Dies macht nach meine Erfahrung besonders viel Sinn, da ich mich zum einen stets unter meinem eigenen Benutzer einlogge und zum anderen auch immer nur an einer Konsole arbeite. Daher nutze ich seitdem keine andere Option mehr mich zu verbinden.

Screen-Sitzung doppelt gestartet

Hat man mehr als eine Sitzung gestartet kann man nun aus Putty heraus nicht mehr mit dem Server verbinden, da nach dem Wiederverbinden das Puttyfenster unmittelbar wieder geschlossen wird.

Dafür lädt man im Putty die gespeicherte Sitzung und entfernt in Connection->SSH->Remote command den Befehl screen -R

Nun startet man die Verbindung ohne diese Profiländerung zu speichern und es öffnet sich die gewohnt leere SSH-Konsole. Hier liestet man sich nun die vorhandenen Sitzungen auf:

vader@deathstar:~> screen -ls

There are screens on:
 30627.pts-7.deathstar (Detached)
 27150.pts-18.deathstar (Detached)
2 Sockets in /var/run/screen/S-vader.

und wählt aus der Auflistung jede Sitzung aus:

screen -R 30627.pts-7.deathstar

Damit kann man nun gezielt eine bestehende Verbindung starten und man kann diese Sitzung ordentlich beenden.  Das macht man solange bis nur noch eine Sitzung zurückgeblieben ist und kann dann die Verbindung schließen und wieder wie oben aufgeführt über Putty verbinden.

Fazit

Screen verwende ich seit 2008 und bin begeistert von der Funktionsvielfalt und Detailtreue der Entwickler. Ich kann mir ein Leben auf der Konsole ohne dessen gar nicht mehr vorstellen da ich stets an mehr als einem Ort zugleich unterwegs bin und oftmals auch mit unterschiedlichen Berechtigungen. Performanceeinbußungen  habe ich hiermit nicht beobachten können, auch wenn ich teilweise regelmäßig 4-8 Sitzungen parallel laufen habe.
Sobald eine weiterer Linux-Server unter meine Obhut gelangt nehme ich im Rahmen meiner ersten Verbindungsaufnahme die hier aufgeführten Einstellungen vor welche zu 95% meiner Grundkonfiguration entspricht und ich für äußerst nützlich halte und sich im Alltag bewährt haben.

Veröffentlicht von

Sebastian

Als erfahrener Softwarentwickler entwickelt Sebastian in einer Softwareschmiede in Bonn Individualsoftware mit den Schwerpunkten in PHP und MySQL. Er hat eine pfiffige Frau sowie drei quirlige Söhne, fährt gerne Auto und liebt handwerkliche Arbeiten die im häuslichen Umfeld so anfallen.

3 Gedanken zu „Screen auf der Linux-Konsole benutzen“

Schreibe einen Kommentar

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

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich stimme zu.