Manchmal vergesse ich, ein Programm unter einer Bildschirmsitzung auszuführen, und kann es nicht in der Mitte stoppen, und ich weiß, dass es lange dauern wird.
Gibt es eine Möglichkeit, einen bereits laufenden Prozess zu überprüfen, ohne ihn neu zu starten?
Für Ihr eigentliches Problem können Sie jedoch noch etwas anderes versuchen: Nachdem Sie Ihren Job vom Terminal aus gestartet haben, müssen Sie ihn im Hintergrund durch Tippen eingeben ctrl- zund dann bg. Danach, nehmen Sie den Job von ihm übergeordnete Shell ist - in bash: disown -h %<jobid>. Danach können Sie das Terminal sicher schließen und der Job wird weiter ausgeführt.
Eine andere Lösung, die in diesem Beitrag nicht gefunden wird, ist die Verwendung von Retty, nachdem eine Bildschirmsitzung gestartet wurde .
Ich habe meine Antwort gelöscht. Sie können (und sollten) Ihre eigene Antwort nach 2 Tagen annehmen. Fühlen Sie sich frei, die relevanten Teile hier zu zitieren, da Cross-Site-Duplikate aufgrund des unterschiedlichen Publikums wirklich nicht Dupes sind.
Jeff Atwood vor 15 Jahren
5
Aber Sie haben die relevanten Teile nicht laut Jeffs Vorschlag zitiert. =)
David Thomas vor 15 Jahren
4
5
DaveJohnston
Schauen Sie sich reptyr an, der genau das tut. Die Github-Seite enthält alle Informationen.
reptyr - ein Werkzeug zum "Umbinden"
Programme.
reptyr ist ein Dienstprogramm, mit dem ein vorhandenes laufendes Programm an ein neues Terminal angeschlossen werden kann. Einen lang andauernden Prozess über ssh gestartet, müssen aber gehen und wollen ihn nicht unterbrechen? Starten Sie einfach einen Bildschirm, verwenden Sie Reptyr, um ihn zu packen, und beenden Sie die SSH-Sitzung, und fahren Sie nach Hause.
VERWENDUNGSZWECK
Reptyr PID
"reptyr PID" greift den Prozess mit der ID PID auf und verbindet ihn mit Ihrem aktuellen Terminal.
Nach dem Anschließen nimmt der Prozess die Eingabe an und schreibt die Ausgabe in das neue Terminal, einschließlich ^ C und ^ Z. (Unglücklicherweise müssen Sie im Hintergrund noch "bg" oder "fg" auf dem alten Terminal ausführen. Dies ist wahrscheinlich nicht in vernünftiger Weise zu beheben, ohne die Shell zu patchen.)