Einen laufenden Prozess überprüfen

24

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?

LiraNuna
quelle

Antworten:

12

Diese Antwort wurde auf serverfault von earl gefunden :

Für Ihr eigentliches Problem gibt es jedoch noch eine andere Möglichkeit: Nachdem Sie Ihren Job über das Terminal gestartet haben, können Sie ihn durch Eingabe im Hintergrund anzeigen ctrl- zund dann bg.
Danach, nehmen Sie den Job von ihm übergeordneten Shell - in bash: disown -h %<jobid>. Danach können Sie das Terminal sicher schließen und der Job wird weiter ausgeführt.

Und dies aus derselben Frage von Rob Wells :

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

Labyrinth
quelle
Gibt es eine Möglichkeit, den Job wieder in den Vordergrund zu rücken? 'screen' dann 'fg 1' funktioniert bei mir nicht
Putnik
@Putnik - hast du die anderen Schritte wie beschrieben gemacht?
Warren
7

In ServerFault wurde ein Duplikat gefunden .

Eine andere Lösung, die in diesem Beitrag nicht gefunden wurde, ist die Verwendung von retty nach dem Starten einer Bildschirmsitzung.

LiraNuna
quelle
5
Ich habe meine Antwort gelöscht. Sie können (und sollten) nach 2 Tagen Ihre eigene Antwort akzeptieren. Fühlen Sie sich frei, die relevanten Teile hier zu zitieren, da Cross-Site- "Duplikate" aufgrund der unterschiedlichen Zielgruppen keine Dupes sind.
Jeff Atwood
4
Aber Sie haben die relevanten Teile nicht gemäß Jeffs Vorschlag zitiert. =)
David wird Monica
5

Schauen Sie sich reptyr an , das macht genau das. Die Github-Seite enthält alle Informationen.

reptyr - Ein Werkzeug zum "Wiederaufnehmen"

Programme.

reptyr ist ein Dienstprogramm zum Übernehmen eines vorhandenen laufenden Programms und zum Anhängen an ein neues Terminal. Hat einen lang laufenden Prozess über ssh gestartet, muss ihn aber verlassen und möchte ihn nicht unterbrechen? Starten Sie einfach einen Bildschirm, greifen Sie ihn mit reptyr, beenden Sie die ssh-Sitzung und fahren Sie nach Hause.

VERWENDUNG

reptyr PID

"reptyr PID" erfasst den Prozess mit der ID PID und hängt ihn an Ihr aktuelles Terminal an.

Nach dem Anhängen übernimmt der Prozess die Eingabe von und schreibt die Ausgabe in das neue Terminal, einschließlich ^ C und ^ Z. (Leider müssen Sie im Hintergrund immer noch "bg" oder "fg" im alten Terminal ausführen. Dies lässt sich wahrscheinlich nicht auf vernünftige Weise beheben, ohne Ihre Shell zu patchen.)

DaveJohnston
quelle