Das Linux Tool ’screen‘

Wenn man einen Linux Server über SSH administriert gibt es ein Problem:
Bei lange laufenden Abläufen muss man Angst haben dass die SSH-Session beendet wird (z.B. weil die Netzwerkverbindung kurz weg ist) und damit das gerade laufende Programm/Tool auch beendet wird.Denn dieses gehört zu der SSH-Session und wenn diese beendet wird, wird es auch beendet. Egal was es gerade tut.

Das kann natürlich je nachdem desaströse Ausmaße annehmen.

Zur Hilfe kommt: SCREEN

Mittels ’screen‘ macht man eine quasi normale Shell-Sitzung auf, die aber im Hintergrund läuft und von der man sich jederzeit trennen und reverbinden kann. Und wenn die SSH-Session stirbt die den Screen gestartet hat macht das auch nichts, denn der Screen bleibt bestehen.

Einen screen startet man so:

screen

Kommandos zum Screen schickt man mittels ‚Strg+A‘ und dem Kommando, z.B. ‚d‘ zum trennen dieser Screen-Session.
(Screen läuft weiter, beenden tut man ihn mit ‚exit‘ – also wenn das Programm welches der Screen laufen lässt (in dem Fall die Shell) beendet wird).

Alle aktiven Screens (und ihre IDs) sieht man mittels:

screen -ls

Mit

screen -r [SCREENID]

kann man sich wieder zu einem screen verbinden.

Mit

Strg + A und danach ESC

kann man innerhalb der Ausgabe eines Screens nachträglich hoch-, und runterscrollen.
(Mit den Pfeiltasten oder Bild-auf, Bild-ab kann man nun scrollen, im allgemeinen gelten die vi-Kommandos, heißt also ‚gg‘ für ‚zum Startpunkt‘ und ‚Shift + g‘ für ‚ans Ende‘ – beenden tut man den Scroll-Modus indem man einfach wieder ESC tippt!)

Und wenn man ein Kommando gleich direkt in einem detachten Screen starten will geht das so:

screen -d -m COMMAND

(Der Screen läuft nun solange COMMANDO läuft)

Und wenn man vor lauter Screens nicht mehr durchblickt, so kann man dem Screen einen Namen geben:

screen -S MEINSCREEN -d -m COMMAND

Ich nutze screen immer wenn ich ein langes Kommando durchführe welches nicht abgebrochen werden sollte weil irgendein Problem mit meiner Netzwerkverbindung auftritt.
z.B. Rein-, oder Rausladen von Datenbanken

Und dann nutze ich es noch um virtuelle Maschinen mittels qemu in einem Screen laufen zu lassen, oder einen Minecraft-Server.
So läuft das ganze immer schön in seiner Sitzung und ich kann mich jederzeit drauf verbinden und die virtuelle Maschine oder den Minecraft-Server administrieren.

PS: Installiert wird Screen, wie zu erwarten, unter Ubuntu mit:

apt-get install screen

Und als extra Goodie gibts hier noch ein Script welches einen Screen mit dem Namen ‚meinscreen‘ nur startet, wenn er noch nicht läuft:
(als Test dient hier das Programm ‚yes‘ welches nichts anderes macht als ‚y‘ auf den Bildschirm zu schreiben – endlos 🙂 )

#!/bin/bash

if ! screen -list | grep -q "meinscreen"; then
        echo `date`": Starting yes"
        screen -S meinscreen -d -m yes
else
        echo `date`": yes already running"
fi

Beitrag veröffentlicht

in

,

von

Schlagwörter:

Kommentare

3 Antworten zu „Das Linux Tool ’screen‘“

  1. Ich würde tmux gegenüber screen vorziehen, screen ist gegenüber tmux etwas ‚kindlich‘:)

  2. Hallo max,

    ich hab mir mal den Artikel unter https://wiki.ubuntuusers.de/tmux/ durchgelesen.
    Scheint für mich so ziemlich das gleiche zu sein.

    Was sind denn die Vorteile gegenüber screen?
    Screen mag ein bisschen einfach gestrickt sein, aber ich hab mich jetzt dran gewöhnt 🙂

    Thomas

  3. […] und bevor wir nun unsere VM starten, starten wir eine screen-Session in der die VM laufen […]

Schreibe einen Kommentar

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

Time limit is exhausted. Please reload CAPTCHA.