web-dev-qa-db-fra.com

Comment ramener un processus d'arrière-plan orphelin au premier plan?

Eh bien ça se passe comme ça, j'ai dû exécuter un programme depuis chez moi en sshing sur le serveur de mon institution. Je ne voulais pas que mon programme se termine à la fermeture de la session (je ne connaissais pas screen).

J'ai appuyé sur Ctrl+Z puis tapez bg pour qu'il s'exécute en arrière-plan. La session s'est terminée. Maintenant, lorsque je me connecte depuis la machine de mon établissement et que je tape ps -u username, cela montre que le programme est toujours en cours d'exécution mais je ne peux pas le mettre au premier plan.

J'ai essayé fg et jobs mais ces commandes ne me donnent aucune sortie.
S'il vous plaît, quelqu'un m'aide ..

28
Rudra Murthy

Si vous avez démarré le processus sans utiliser la commande "screen", vous ne pouvez pas reprendre ce processus. Fondamentalement, vous ne pouvez pas reprendre un processus qui a été démarré dans un autre Shell.

Lorsque votre session est terminée, tout le processus bg passe à l'état détaché. Bien que vous puissiez être en mesure de voir les détails d'un tel processus, vous ne pouvez pas les affecter à un shell à partir de la connexion par la suite

22
knightrider

Si un processus est devenu orphelin, vous ne pouvez pas le "reparent" à un autre Shell et utiliser fg, bg, ^ Z, ^ C, etc. pour le contrôler.

Il semble que vous demandiez implicitement comment contrôler un processus orphelin. Puisque vous pouvez voir le processus en utilisant la commande ps, vous avez son pid. Vous pouvez utiliser ce pid comme argument de la commande kill, qui vous permettra d'arrêter, de continuer ou de terminer le processus. Vous ne pouvez pas attendre la fin du processus, mais vous pouvez interroger pour voir s'il existe toujours en utilisant la commande "kill -0 <pid>".

9
Stuart Marks

https://serverfault.com/questions/55880/moving-an-already-running-process-to-screen

Donne une vue alternative sur cette question, La première réponse suggère d'utiliser Reptyr.

5
chim