screen

"Screen" ist ein ziemlich nützliches Programm. Es erlaubt in einem Terminal/Konsole Fenster mehrere virtuelle Terminals zu öffnen, zwischen diesen umzuschalten oder diese in den Hintergrund zu schicken, d.h. man bleibt eingeloggt, obwohl man gar nicht mehr eingeloggt ist und kann die Sitzung später oder sogar von woanders wieder dort fortsetzten wo man das letzte Mal aufgehört hat.

screen

startet einen neuen "screen" man bekommt einen kurzen Begrüssungsschirm und mit "return" oder "space" Taste kommt man in eine ganz normale Shell.

Beendet man die Shell mit "exit" so beendet sich auch das "screen" wieder (es kommt die Meldung [screen is terminating] und man ist wieder in der Shell von der aus man "screen" aufgerufen hat..). Wir beenden es jetzt aber nicht, sondern starten irgendein Programm. z.B. "ls"

drücken wir jetzt:

control-a c (control drücken, a drücken, a auslassen control auslassen, c drücken c auslassen)

so bekommen wir eine neue shell. Hier können wir wieder irgend etwas machen.. z.B. "irc" starten oder "mutt" oder "pine", oder was auch immer..

mit

control-a n

können wir jetzt zwischen den beiden Shells oder den darin gestarteten Programmen umschalten.

mit

control-a c

c wie "create" können wir beliebig viele weitere virtuelle Terminals aufmachen und mit control-a n der reihe nach umschalten:

control-a p

schaltet auch um aber in umgekehrter Reihenfolge
n.. next p..previous

Das "screen" Programm fängt also die control-a Taste für uns ab und benutzt sie, um interne Funktionen zu steuern. Was wenn wir aber in das Programm ein control-a eingeben wollen?

control-a a

sagt dem "screen" Programm, dass es ein normales control-a an das darunterliegende Programm weiter schicken soll (in der "bash" oder im "joe" bringt uns dieses control-a dann z.B. an den Zeilenanfang.)

Schliessen wir das "xterm" in dem wir das "screen" aufgemacht haben oder wird die Verbindung zu dem Rechner auf dem wir das "screen" gestartet haben unterbrochen so läuft das "screen" und alle darin gestarteten Programme dennoch weiter. Wir sagen das "screen" ist "detached". Wir können uns auch absichtlich selbst "detachen":

control-a d

d... detach

schickt das "screen" in den Hintergrund. Wir kommen zurück in die Shell von der aus wir "screen" das erste Mal aufgerufen haben. Das "screen" ist im Hintergrund aber für uns nicht mehr aktiv (d.h control-a tut das was es immer schon tat: es bringt uns an den Zeilenanfang in der "bash")

Wir könnten uns jetzt ganz ausloggen, ans andere Ende der Welt fliegen, von dort aus mit ssh auf unserem Rechner wieder einloggen und dann:

screen -r

aufrufen (das -r steht für "reattached"). Nach dem "reattach" sind wir wieder im "screen" Programm und können dort weitermachen wo wir das letzte Mal aufgehört haben. Falls wir am anderen Ende der Welt vergessen haben, dass wir dort zuerst "detachen" dann können wir das auch von hier aus machen:

screen -d

"detached" ein "screen" das von woanders noch offen ist, falls noch eines offen ist. Man kann das auch in einem machen:

screen -d -r

"detached" zuerst das andere "screen" von woanders und "reattached" es am Terminal vor dem wir gerade sitzen.

Wichtig: nicht sinnlos viele Screens offenlassen, die man nicht braucht. Jede Shell und jedes laufende Lrogramm benötigen etwas Ressourcen. Also "screen" nur dort verwenden wo man es sinnvoll brauchen kann...

weitere nützliche Features von "screen2:

screen -x

"attached" einen "screen" der bereits woanders "attached" wird. Damit kann man auf 2 Seiten gleichzeitig arbeiten. Man kann vom einen "screen" aus sehen, was am anderen getippt wird (wenn man im selben virtuellen Fenster ist)

auch nützlich:

control-a x

"locked" den "screen". Man muss es mit Angabe seines Passwortes wieder entsperren.


EXERCISES:

* Starte ein "screen". Mach einige virtuelle Terminals auf. Starte Programme darin. Schalte zwischen den Terminals um. "Detache" den "screen". "Reattache" ihn. Log dich von woanders ein und "detache" den ersten von dort. "Reattache" von dort.

* Angenommen du sitzt vor Rechner A und hast dort ein "screen" laufen. In einem der virtuellen "screen" Terminal machst du ein ssh auf einen anderen Rechner namens B. Dort "reattachst" du ein laufendes "screen" mit "screen -d -r" mit "control-a n" schaltest du die Fenster im aüsseren "screen" (auf A) um. Frage: wie kannst du die Fenster im inneren "screen" (auf B) umschalten?


REFERENCES:

man screen

info screen

screen --help