Verwaiste Screen-Session entfernen

Der Befehl screen dient dazu Terminal-Sitzungen zu erzeugen, welche im Hintergrund weiterlaufen können. Allerdings kann es hierbei unter Umständen passieren, das eine solche Session verweist bzw. nicht mehr reagiert. In einem solchen Fall kann die Session beendet werden. Tritt dies bei mehreren Sitzungen auf, kann der Befehl:

screen -wipe

genutzt werden. Der Befehl überprüft alle laufenden screen-Sitzungen und entfernt die Einträge von abgestürzten oder nicht mehr existierenden screen-Sitzungen.

Videos im Terminal unter Ubuntu in MP3s umwandeln

Videos können unter Ubuntu mithilfe von FFmpeg einfach in MP3s umgewandelt werden:

ffmpeg -i file.mp4 file.mp3

Mithilfe von find kann diese Operation auch für ein komplettes Verzeichnis durchgeführt werden:

find . -iname "*.mp4" -type f -exec ffmpeg -i {} {}.mp3 \;

Da diese Operation einige Zeit in Anspruch nimmt, kann das Ganze auch mittels screen ausgeführt und so in den Hintergrund verlagert werden:

screen find . -iname "*.mp4" -type f -exec ffmpeg -i {} {}.mp3 \;

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.