Filtrer un processus en cours

24

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 ça va prendre longtemps.

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

LiraNuna
la source

Réponses:

12

Trouvé cette réponse sur serverfault de Earl :

Cependant, pour votre problème réel, vous pouvez essayer une autre chose: après avoir lancé votre travail à partir du terminal, mettez-le en arrière-plan en tapant ctrl- zpuis bg.
Après cela, détachez le travail du shell parent de - dans bash: disown -h %<jobid>. Après cela, vous pouvez fermer le terminal en toute sécurité et le travail continuera de s'exécuter.

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

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

garenne
la source
Existe-t-il un moyen de remettre le travail au premier plan? 'écran' puis 'fg 1' ne fonctionne pas pour moi
Putnik
@Putnik - avez-vous fait les autres étapes comme décrit?
warren
7

Trouvé un doublon dans ServerFault .

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

LiraNuna
la source
5
J'ai supprimé ma réponse; vous pouvez (et devriez) accepter votre propre réponse après 2 jours. N'hésitez pas à citer les parties pertinentes ici, car les "doublons" intersites ne sont vraiment pas dupes en raison des différents publics.
Jeff Atwood,
4
Mais vous n'avez pas cité les parties pertinentes, selon la suggestion de Jeff. =)
David dit de réintégrer Monica le
5

Jetez un oeil à reptyr , 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 en cours d'exécution et l'attacher à un nouveau terminal. Vous avez démarré un processus de longue durée sur ssh, mais vous devez partir et vous ne voulez pas l'interrompre? Il suffit de démarrer un écran, d'utiliser reptyr pour le saisir, puis de tuer la session ssh et de rentrer à la maison.

USAGE

reptyr PID

"reptyr PID" saisira le processus avec l'ID PID et le rattachera à votre terminal actuel.

Après l'attachement, le processus prendra l'entrée et l'écriture de la sortie vers le nouveau terminal, y compris ^ C et ^ Z. (Malheureusement, si vous le faites en arrière-plan, vous devrez toujours exécuter "bg" ou "fg" dans l'ancien terminal. Ceci est probablement impossible à corriger de manière raisonnable sans patcher votre shell.)

DaveJohnston
la source