Blog CP2i Non classé Détacher un processus d’un terminal

Détacher un processus d’un terminal

Petit billet pour ceux qui, comme moi, oublient très régulièrement de lancer leurs jobs chronophages dans un screen et qui doivent fermer leur terminal…

Alors imaginons le cas suivant :

  • Vous avez lancé un script qui va prendre LONNNNNNNNNNNGTEMPS à se finir dans un terminal
  • Vous devez impérativement quitter le terminal en question (fin du taff, on doit rentrer chez soi, etc) ou vous avez peut que votre shell soit tué
  • Vous ne pouvez pas vous permettre de couper le job en question.

La solution:

Mise en pause du processus

root@~ > /bin/sh -c /home/moi/bin/mon_script.sh > /dev/null
(Ctrl + z)
[1]+ Stopped /bin/sh -c /home/moi/bin/mon_script.sh > /dev/null

Récupération du PID

root@~> ps aux |grep mon_script
root 26911 0.0 0.0 2404 1040 ? Ss 08:12 0:00 /bin/sh -c /home/moi/bin/mon_script.sh > /dev/null

Mise en background

root@~> bg
[1]+ /bin/sh -c /home/moi/bin/mon_script.sh > /dev/null &

Détachement du owner du PID

root@~> disown -h 26911

Et voila!!!

Vous pouvez maintenant fermer votre terminal, votre job se poursuivra sans risque de se faire couper !

@ bientôt

Répondre