1 votes

UNIX : comment reprendre un processus en utilisant l'ID du processus ?

J'ai un problème pour reprendre les processus.

Lorsque j'ai essayé de faire passer un processus au premier plan à l'aide de la fonction jobs Si je ferme le Shell et que je le relance, mon processus n'apparaît pas dans la liste des tâches.

Je ne connais que le nom du processus et son ID. Comment puis-je le faire passer au premier plan ?

7voto

Marianna Points 294

Je pense qu'une fois que vous avez détaché votre terminal d'un processus en vous déconnectant, vous perdez la possibilité de le rattacher à nouveau. A moins que vous n'utilisiez un utilitaire comme screen pour gérer vos sessions.

Cela peut être utile....

https://unix.stackexchange.com/questions/31824/how-to-attach-terminal-to-detached-process

3voto

Cédric Points 164

Si vous démarrez le processus à l'origine en utilisant screen que vous pourrez rattacher plus tard :

  1. Exécuter screen -D -R
  2. Exécutez votre commande à l'intérieur.
  3. Pulse Ctrl A entonces D de se déconnecter de screen . Le processus se poursuivra et vous reviendrez au Shell d'origine.

Puis, plus tard, à partir de n'importe quel terminal :

  1. Exécuter screen -D -R
  2. Vous reviendrez à l'écran Shell, où votre programme s'exécutera depuis tout à l'heure.

Si le processus est déjà en cours d'exécution ou si vous n'avez pas la possibilité de le démarrer par l'intermédiaire de screen , il existe également un outil appelé reptyr qui peuvent le faire. Vous pouvez l'utiliser sur un processus existant, puis fermer le terminal, ouvrir un nouveau terminal et l'utiliser pour rattacher le processus existant au nouveau terminal.

2voto

user43791 Points 121

En supposant que vous n'utilisiez pas screen et que le processus a été arrêté à l'aide du signal "SIGTSTP" ou "SIGSTOP", vous pouvez toujours essayer d'envoyer le signal "CONTINUE" au processus comme suit :

kill -SIGCONT $PID

donde $PID est l'identifiant de votre processus.

1voto

Vel Points 11

Lorsque vous fermez le terminal, le processus est envoyé SIGHUP , le signal de raccrochage. À moins que vous n'utilisiez un utilitaire comme screen o nohup ou que le programme se comporte de manière particulièrement étrange, SIGHUP entraînera l'arrêt progressif du processus.

1voto

munkeyoto Points 142

Si vous avez lancé le processus en arrière-plan, vous pouvez simplement taper fg pour reprendre là où vous vous étiez arrêté, sinon vous pouvez déshabiliter le programme, ouvrir screen, rattacher le PID en utilisant screen, et enfin utiliser reptyr pour récupérer le processus lorsque vous êtes dans screen

$ disown yourprogram          # Detach yourprogram from the shell
$ screen                      # Launch screen
$ reptyr $(pgrep yourprogram) # Get back the process

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X