Reptyr – Prozesse in eine andere Bildschirm-Shell verschieben [Linux]

Unter Linux kann es beim Ausführen eines Prozesses, der lange dauert, mühsam sein, ihn auf halbem Weg zu beenden, weil Sie keine Zeit mehr haben oder weil Sie nach Hause müssen. Wenn Sie jemals zuvor auf eine solche Situation gestoßen sind, müssen Sie sich unbedingt das Reptyr-Tool besorgen.

Was ist Reptyr?

Das Reptyr-Tool ist ein Befehlszeilendienstprogramm, das einen laufenden Prozess von einem Terminal übernimmt und auf ein anderes migriert. Mit anderen Worten: Es wiederholt einen Vorgang. Auch der Name erinnert an ein Pseudoterminal – oft abgekürzt als „PTY“. Ein Pseudoterminal ist, falls Sie es noch nicht wussten, ein Werkzeug, mit dem zwei Prozesse (ein Master und ein Slave) miteinander verknüpft werden können. Was Sie auf dem einen schreiben, spiegelt sich im anderen wider.

Wie funktioniert Reptyr?

Mit Reptyr können Sie einen Prozess am Arbeitsplatz starten und zu Hause beenden (wenn Sie SSH verwenden). Es gibt andere Tools, die dem Reptyr-Tool ähneln, wie Screenify und Retty, und Sie sind möglicherweise schon einmal auf sie gestoßen. Allerdings hat sich Reptry derzeit als besser als seine Konkurrenten erwiesen. Es hat weniger Fehler und ist weitaus effizienter. Das Problem bei diesen anderen Tools besteht darin, dass das steuernde Terminal der Prozesse nicht geändert wird, selbst wenn der Prozess migriert wird. Wenn Sie beispielsweise Screenify verwenden und versuchen, die Befehle „^c“ oder „^z“ auf dem neuen Terminal zu verwenden, funktionieren diese nicht richtig. Dies liegt daran, dass sie auf dem Terminal ausgeführt werden, das gerade die Kontrolle hat. Wenn Sie die Größe eines Programmfensters ändern oder den Befehl „less“ ausprobieren, funktioniert es ebenfalls nicht richtig, da Linux vorgetäuscht wird, dass Sie immer noch auf dem alten Terminal arbeiten.

Wie funktioniert Reptyr genau? Es zielt auf den Prozess ab, den wir mithilfe der Ptrace-API migrieren möchten, öffnet ein neues Terminal und verwendet „dup2“, um die alten Dateideskriptoren zu überschreiben. Reptyr unterscheidet sich auch dadurch von anderen Prozessen, dass es das steuernde Terminal ändert. Sie können das überprüfen Offizieller Blog Um die Details zu erfahren, geht es im Wesentlichen darum, die ioctl- und TIOCSCTTY-Funktion in Linux zu manipulieren, um den Steuerungsprozess zu ändern.

Installation

In einer Ubuntu-basierten Distribution können Sie apt-get verwenden, um die Anwendung zu installieren:

sudo apt-get install reptyr

Mit Reptyr einen Prozess auf einen neuen Bildschirm verschieben

Sie können Reptyr auch zusammen mit der GNU Screen-Software-App (oder einer ähnlichen Terminal-Multiplexer-Anwendung) verwenden, um Ihren Prozess in eine neue Bildschirmsitzung zu verschieben. Wenn Sie beispielsweise einen laufenden Prozess haben und Ihren Server neu starten müssen, können Sie ihn in eine neue Bildschirmsitzung übertragen, damit Sie nach einem Systemneustart wieder darauf zugreifen können. Klingt nützlich, oder? Wie macht man das also genau?

Zunächst müssen Sie den Prozess, den Sie migrieren möchten, anhalten. Dies kann auf unterschiedliche Weise erfolgen – es hängt alles von dem Prozess ab, den Sie ausführen (meistens funktioniert „^z“). Nachdem Sie es angehalten haben, müssen Sie den Vorgang im Hintergrund fortsetzen. Der Befehl hierfür lautet: „Sie wussten es nicht“

Als Nächstes müssen Sie den untergeordneten Prozess vom übergeordneten Prozess isolieren. Dies liegt daran, dass der übergeordnete Prozess während des Neustarts beendet wird, und Sie müssen verhindern, dass dies auch beim untergeordneten Prozess passiert. Verwenden Sie dazu den Befehl disown:

Anschließend müssen Sie die Bildschirmsoftwareanwendung starten. Es ist tatsächlich ein ziemlich praktisches Tool – es kann einfach heruntergeladen werden, wenn Sie es nicht haben. Sie starten es mit dem folgenden Befehl:

Und jetzt müssen Sie den Prozess abrufen, den Sie migrieren möchten. Bitte beachten Sie, dass Sie für diesen Befehl die PID des laufenden Prozesses benötigen. Alternativ können Sie den Befehl „pgrep“ verwenden. Wenn Sie die PID kennen, geben Sie Folgendes ein:

Wenn Sie die PID nicht kennen:

reptyr $(pgrep name_of_process)

Und du bist fertig! Sie können sich jetzt von Ihrer Sitzung abmelden, ohne den Vorgang abzubrechen.

Rekapitulieren

$ Strg+Z # Aktuellen Prozess anhalten $ disown  # Prozess von der Shell trennen $ screen # Bildschirm starten $ reptyr $(pgrep irssi) # Den Prozess wiederherstellen

Reptyr ist Open Source und völlig kostenlos. Es ist einfach einzurichten und zu verwenden, also probieren Sie es einfach aus. Ich bin mir sicher, dass Sie es sehr praktisch finden werden.

Index
  1. Was ist Reptyr?
  2. Wie funktioniert Reptyr?
  3. Installation
  4. Mit Reptyr einen Prozess auf einen neuen Bildschirm verschieben
  5. Rekapitulieren

Schreibe einen Kommentar

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

Go up