Ecouter un processus en cours d'exécution

Parfois, j'oublie d'exécuter un programme sous une session d'écran et je ne peux pas l'arrêter au milieu, et je sais que cela va durer longtemps.

Existe-t-il un moyen d'écraser un processus déjà en cours de fonctionnement sans le redémarrer?

Trouvé cette réponse sur serverfault à partir de Earl :

Cependant, pour votre problème réel, il y a une autre chose que vous pourriez essayer: après avoir lancé votre travail à partir du terminal, décrivez-le en tapant ctrlz puis bg .
Après cela, détachez le travail de son coque parent – en bash : disown -h %<jobid> . Après cela, vous pouvez fermement fermer le terminal et le travail continuera.

Et celui-ci de la même question de Rob Wells :

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

Trouvé un duplicata dans ServerFault .

Une autre solution non trouvée dans cette publication utilise retty après le démarrage d'une session d'écran.

Jetez un oeil à reptyr , ce qui fait exactement cela. La page github contient toutes les informations.

Reptyr – Un outil pour "re-ptying"

programmes.

Reptyr est un utilitaire pour prendre un programme existant et l'attacher à un nouveau terminal. Commencé un long processus sur ssh, mais doit partir et ne veut pas l'interrompre? Il suffit de commencer un écran, utiliser reptyr pour l'attraper, puis tuer la session ssh et aller à la maison.

USAGE

PID Reptyr

"Reptyr PID" prendra le processus avec ID PID et le fixera à votre terminal actuel.

Après la connexion, le processus entrera et écrira la sortie sur le nouveau terminal, y compris ^ C et ^ Z. (Malheureusement, si vous l'avez fondé, vous devrez toujours exécuter "bg" ou "fg" dans l'ancien terminal. Il est probable que cela ne soit pas possible de réparer de manière raisonnable sans remédier à votre shell.)