Laufenden Prozess zu screen überführen

Das Kommandzeilentool screen ist praktisch, da Prozesse, welche mittels screen gestartet wurden, auch nach dem Logout weiter laufen. Problematisch ist es, wenn ein Prozess ohne screen gestartet wurde und er nachträglich in screen überführt werden soll. Hierfür wird das Tool reptyr benötigt:

apt install reptyr

Mithilfe von reptyr ist es möglich eine Anwendung an ein neues Terminal zu binden. Um nun einen Prozess zu screen zu überführen, muss erst einmal eine neue screen-Instanz gestartet werden:

screen bash

Sobald die Instanz geöffnet wurde, kann der eigentliche Prozess neu zugewiesen werden:

reptyr PID

PID ist hierbei die Prozess-ID, welche sich mittels des ps-Kommandos ermitteln lässt. Alternativ kann dafür auch top oder htop genutzt werden. Damit wurde die Terminalsitzung und mit ihr der laufende Prozess in die screen-Sitzung überführt.

Screen-Session wieder aufnehmen

Wenn man unter Linux eine Session mittels screen gestartet hat und diese später wieder aufrufen möchte, so nutzt man den Befehl:

screen -r

Unter bestimmten Bedingungen kann es vorkommen, das die Sitzung noch gebunden ist. Auf der Konsole würde das dann wie folgt aussehen:

# screen -r

There is a screen on:
	29711.ubuntu-release-upgrade-screen-window	(05/05/2016 04:09:56 PM)	(Attached)
There is no screen to be resumed matching 29711.ubuntu-release-upgrade-screen-window.

Vorkommen kann so etwas z.B. wenn man die SSH-Verbindung während einer Screen-Sitzung verliert. Damit man diese Screen-Sitzung wieder aufnehmen kann, muss die bestehende Bindung zuerst wieder gelöst werden. Dazu gibt es das Kommando:

screen -d

welches die Bindung löst. Bei mehreren offenen Sitzungen muss zusätzlich die ID der Sitzung angegeben werden. Anschließend kann die Sitzung wieder mittels:

screen -r

aufgenommen werden.

Cannot open your terminal

Wenn man eine Anwendung mittels “screen” ausführt, kann es passieren das man den Fehler:

Cannot open your terminal '/dev/pts/0' - please check.

zu Gesicht bekommt. Vielfach wird empfohlen bei diesem Fehler die Rechte des Gerätes zu ändern:

chmod 777 /dev/pts/0

Anstatt diese Lösung zu nutzen sollte man vor der Ausführung von “screen” den Befehl:

script /dev/null

auszuführen. Damit kann “screen” anschließend ohne Fehlermeldung genutzt werden.

Screen detached

Manchmal möchte man eine “screen”-Sitzung starten, ohne das diese dabei geöffnet wird. Dazu muss man die Sitzung “detached” starten:

screen -d -m example.sh

Damit ist die “example.sh” in der “screen”-Umgebung gestartet und kann später wieder aufgerufen werden.

Einen IRC Channel von der Kommandozeile mitloggen

Es gibt sicher den einen oder andere interessanten IRC Channel. Was macht man aber wenn man alles lesen möchte was in ihm geschrieben ist aber nicht immer online ist bzw. man den Rechner nicht zu Hause laufen lassen möchte. In solchen Fällen ist ein eigener Server im Netz sehr praktisch.

In diesem Beispiel nutzen wir den IRC Clienten irssi sowie die Anwendung screen. Installiert wird das ganze mittels apt-get:

sudo apt-get install irssi screen

Nachdem wir das installiert haben kann es auch schon losgehen:

screen irssi
/set nick seeseekey
/set autolog on
/connect irc.freenode.net
/join #neo1973-germany

Zu finden sind die Logs dann unter “~/irclogs/servername/#channelname.log”. Mit Strg+A und anschließend D verlässt man den Screen und kann seine SSH Verbindung beenden. Der IRC Client läuft im Hintergrund weiter. Mittels “screen -r” kann man den Screen später wieder aufrufen.