Question Déplacement d'un processus en cours d'exécution vers Screen


Mon travail de bureau me voit régulièrement connecté à une machine Linux via VNC.

Parfois, je lance un travail distant sur la console et réalise plus tard qu'il est exécuté beaucoup plus longtemps que prévu. (Aurait dû commencer celui-ci sous l'écran en premier lieu ...)

Je ne veux pas laisser mon poste de travail fonctionner pendant la nuit pour garder la session VNC ouverte; Je souhaite déplacer ce travail distant en cours d'exécution vers une session Screen (sur le boîtier distant), afin de pouvoir éteindre le poste de travail (et vous reconnecter le lendemain matin).

Comment cela peut-il être fait, voire pas du tout?


205
2017-08-18 11:03


origine


et c'est une dupe, serverfault.com/questions/49877/… - semble que cela ne peut pas être fait. - Paul Dixon
superuser.com/questions/28568/screen-a-running-process - warren
Regarde aussi Comment puis-je désavouer un processus en cours et l'associer à un nouvel écran?. - dma_k
Double possible de Est-ce que je peux nohup / screen un processus déjà commencé? - scai
Recherchez le script screenify. - Vashu


Réponses:


Jettes un coup d'oeil à reptyr, qui fait exactement cela. La page github contient toutes les informations.

reptyr - Un outil pour "re-ptying" des programmes.

reptyr est un utilitaire pour prendre un   programme en cours existant et attacher   à un nouveau terminal. A commencé un   processus de longue durée sur ssh, mais   doivent partir et ne veulent pas   l'interrompre? Il suffit de démarrer un écran, utilisez   reptyr pour le saisir, puis tuer le   Séance SSH et rentrez chez vous.

USAGE

PID reptyr

"reptyr PID" va saisir le processus   avec id PID et attachez-le à votre   terminal actuel.

Après la fixation, le processus prendra   entrée de et écrire la sortie vers le nouveau   terminal, y compris ^ C et ^ Z.   (Malheureusement, si vous l’arrière-plan,   vous devrez toujours exécuter "bg" ou   "fg" dans l'ancien terminal. C'est   probablement impossible à résoudre dans un   manière raisonnable sans patcher votre   coquille.)


192
2018-06-28 09:25



Si, comme moi, vous avez regardé le lien ci-dessus et avez brièvement envisagé d'installer le programme à partir des sources, ne vous inquiétez pas: c'est juste un apt-get loin sur les systèmes Debian. - mlissner
Cela fonctionne très bien, comment n'ai-je pas vu cela auparavant? - deed02392
C'est génial! Je le voterais 10 fois si je pouvais! De plus, reptyr est également disponible dans les dépôts RedHat. Juste 'yum install' pour l'obtenir. - Mark J. Bobak
Ne fonctionne pas sauf dans les cas les plus triviaux: Unable to attach. (This most commonly means that 11690 has a suprocesses) - Mehrdad
Au moins en tant que root, vous pouvez utiliser reptyr -T PID - ChristophK


Vous ne pouvez pas faire cela facilement. Je suggérerais de prendre l'habitude de démarrer screen comme la première chose à faire après l'ouverture d'une console.

Cependant, pour votre problème actuel, vous pouvez essayer une autre chose: après avoir lancé votre travail depuis le terminal, mettez-le en arrière-plan en tapant ctrl-z, puis bg. Après cela, détachez le travail de son shell parent; en bash tu ferais disown -h %<jobid>. Après cela, vous pouvez fermer le terminal en toute sécurité et le travail continuera à être exécuté.


42
2017-08-18 11:11



Cela a très bien fonctionné pour mon cas. Reptyr et Retty n'ont pas réussi à saisir le processus, mais tout ce dont j'avais besoin, c'était de pouvoir fermer un terminal et laisser le processus s'exécuter. - STW
FYI: après renierle processus, il peut être reptyrà l'intérieur écran. - Adam
Cela a tué mon programme en cours :( - Mehrdad


Lorsque vous utilisez Linux, qu’en est-il de l’utilisation de retty dans le processus d’écran récemment lancé?

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

HTH

à votre santé,


37
2017-08-18 12:09



Je ne savais pas de retty, merci. Cependant, pour les travaux de longue haleine auxquels je pense, je suis un peu réticent à utiliser un outil qui se dit "très légèrement testé". Je vais avec la solution de Earl.
voir pas de retty à Gentoo - Sergei
ne peut pas attacher à 4858 - Arnold Roa