Frage Verschieben eines bereits laufenden Prozesses in den Bildschirm


Mein Bürojob sieht routinemäßig, dass ich über VNC mit einer Linux-Box verbunden bin.

Manchmal starte ich einen Remote-Job auf der Konsole und merke später, dass es viel länger als erwartet läuft. (Eigentlich hätte ich das zuerst unter Screen starten sollen ...)

Ich möchte meine Workstation nicht über Nacht laufen lassen, nur um die VNC-Sitzung offen zu halten. Ich möchte diesen bereits laufenden Remote-Job in eine Bildschirmsitzung (auf der Remote-Box) verschieben, damit ich die Workstation ausschalten und am nächsten Morgen wieder verbinden kann.

Wie kann dies, wenn überhaupt, geschehen?


205
2017-08-18 11:03


Ursprung


und es ist ein Betrogener, serverfault.com/questions/49877/... - scheint nicht möglich. - Paul Dixon
superuser.com/questions/28568/screen-a-running-process - warren
Siehe auch Wie kann ich einen laufenden Prozess ablehnen und ihn einer neuen Bildschirm-Shell zuordnen?. - dma_k
Mögliches Duplikat von Kann ich einen bereits gestarteten Prozess nohup / screenen? - scai
Suchen Sie nach screenify-Skript. - Vashu


Antworten:


Schau es dir an Reptyrwas genau das tut. Die GitHub-Seite enthält alle Informationen.

reptyr - Ein Werkzeug zum "Wiederholen" von Programmen.

Reptyr ist ein Dienstprogramm für die Aufnahme eines   bestehendes Laufprogramm und Anhängen   es zu einem neuen Terminal. Begann a   langwieriger Prozess über ssh, aber   müssen gehen und nicht wollen   unterbrichst du es? Starten Sie einfach einen Bildschirm, verwenden Sie   Reptyr, um es zu greifen, und dann töten   SSH-Sitzung und Kopf nach Hause.

VERWENDUNGSZWECK

Reptyr PID

"reptyr PID" wird den Prozess aufnehmen   mit id PID und befestigen Sie es an Ihrem   aktuelles Terminal.

Nach dem Anbringen wird der Prozess ausgeführt   Eingabe von und Schreiben von Ausgabe auf die neue   Terminal, einschließlich ^ C und ^ Z.   (Leider, wenn Sie es Hintergrund,   Sie müssen noch "bg" oder ausführen   "fg" im alten Terminal. Das ist   wahrscheinlich unmöglich in einem zu beheben   vernünftiger Weise, ohne Ihre   Schale.)


192
2018-06-28 09:25



Wenn Sie, wie ich, den obigen Link angeschaut haben und kurz darüber nachgedacht haben, das Programm aus der Quelle zu installieren, sollten Sie sich beherzigen: es ist nur ein apt-get auf Debian-Systemen. - mlissner
Das funktioniert super, wie habe ich das vorher nicht gesehen? - deed02392
Das ist fantastisch! Ich würde es 10 Mal aufwerten, wenn ich könnte! Reptyr ist auch in RedHat-Repos verfügbar. Just 'yum installieren', um es zu bekommen. - Mark J. Bobak
Funktioniert nicht, außer in den einfachsten Fällen: Unable to attach. (This most commonly means that 11690 has a suprocesses) - Mehrdad
Zumindest als root können Sie verwenden reptyr -T PID - ChristophK


Du kannst das nicht leicht machen. Ich würde vorschlagen, es zu einer Gewohnheit zu machen, den Bildschirm als erstes zu starten, nachdem Sie eine Konsole geöffnet haben.

Für Ihr tatsächliches Problem gibt es noch eine andere Sache, die Sie ausprobieren könnten: Nachdem Sie Ihren Job vom Terminal aus gestartet haben, hinterlegen Sie ihn mit ctrl-z und dann bg. Danach trennen Sie den Job von der übergeordneten Shell. In der Bash würden Sie tun disown -h %<jobid>. Danach können Sie das Terminal sicher schließen und der Job wird weiter ausgeführt.


42
2017-08-18 11:11



Das hat sehr gut für meinen Fall funktioniert. Sowohl reptyr als auch retty konnten den Prozess nicht erfassen, aber alles was ich brauchte, war ein Terminal schließen zu können und den Prozess laufen zu lassen. - STW
Zu Ihrer Information: nach verleugnen- den Prozess kann es sein Reptyrdrinnen Bildschirm. - Adam
Das hat mein laufendes Programm umgebracht :( - Mehrdad


Wie verhält es sich mit Linux, wenn Sie retty im neu gestarteten Bildschirmprozess verwenden?

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw

HTH

Prost,


37
2017-08-18 12:09



Ich wusste nichts von Rettich, danke. Für die Art von langwierigen Jobs, die ich im Sinn habe, zögere ich dagegen, ein Werkzeug zu verwenden, das sich selbst als "sehr leicht getestet" bezeichnet. Ich gehe mit Earls Lösung.
Sehen Sie in Gentoo keinen Rettich - Sergei
kann nicht an 4858 angehängt werden - Arnold Roa