Überprüfen Sie einen laufenden Prozess

14549
LiraNuna

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?

22

3 Antworten auf die Frage

11
warren

Diese Antwort auf Serverfehler von Earl gefunden :

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.

Und dies aus der gleichen Frage von Rob Wells :

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

Gibt es eine Möglichkeit, den Job wieder in den Vordergrund zu bringen? 'screen', dann 'fg 1' funktioniert für mich nicht Putnik vor 11 Jahren 0
@Putnik - hast du die anderen Schritte wie beschrieben gemacht? warren vor 11 Jahren 0
7
LiraNuna

Du hast ein Duplikat in ServerFault gefunden .

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.)