Kurztipp: Laufende Prozesse in andere Terminals verschieben

Das folgende Szenario ist vermutlich jedem Linux-Benutzer bekannt: ein laufender Prozess soll in ein anderes Terminal verschoben werden. Klassisches Beispiel – das längere Applikationsupdate soll unterwegs in einer GNU Screen-Sitzung verfolgt werden. Blöd, wenn man vorher nicht daran gedacht hat.

Glücklicherweise gibt es hier entsprechende Tools. Vor einigen Jahren habe ich mit retty ein solches Tool gefunden – leider war es nicht besonders stabil; so stürzten mir die zu verschiebenden Applikation häufig ab. Mehr Erfolg hatte ich mit dem Programm reptyr, welches bei vielen Linux-Distributionen zum Software-Umfang gehört (unter Enterprise Linux kann das Programm über das EPEL-Repository bezogen werden).

Um einen Prozess in eine GNU Screen-Sitzung zu verschieben, muss das Programm mit der Tastenkombination STRG+Z in den Hintergrund verschoben werden. Nach Eingabe von bg wird der Prozess im Hintergrund fortgeführt.

$ programm
STRG+Z
$ bg

Der nächste Schritt ist es, den Prozess vom aktuellen Terminal abzukoppeln, damit es an ein anderes Terminal angekoppelt werden kann. Genauer gesagt, wird der Job aus der Tabelle aktiver Jobs entfernt – hierzu dient das disown-Kommando:

$ disown %1

Anschließend wird GNU Screen gestartet und die entsprechende PID der Applikation gesucht – beispielsweise mit ps oder pgrep.

$ screen
$ pgrep programm

Abschließend wird die PID an reptyr übergeben, um den Prozess in das neue Terminal zu verschieben:

$ reptyr PID

4 Kommentare Schreibe einen Kommentar

  1. Hi Chris,

    erstmal noch ein schönes, erfolgreiches und gesundes neues Jahr!

    Ich habe Deinen Tip gerade mal auf meinem Raspi ausprobiert, läuft auch da problemlos (auch wenn ich den vermutlich nicht unterwegs mitnehmen werde…)!

    Danke und Gruß,

    Peter

    • Hallo Peter!

      Vielen lieben Dank für die Glückwünsche – ich wünsche dir und deiner Familie ebenso ein gesundes neues Jahr! Ich hoffe, ihr seid gut reingekommen. 🙂

      Freut mich, dass der Tipp auch auf deinem Rasperry Pi funktioniert. 🙂

      Beste Grüße,
      Christian!

Schreibe einen Kommentar