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 job 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

Commentaires

1. Le jeudi, juin 28 2012, 18:06 par Gourgandine

Parfait merci pour le tuyau ça permet de partir en week end plus tôt :D

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet