Détacher un processus d'un terminal
Par zokar le vendredi, juin 17 2011, 08:18 - Sysadmin - Lien permanent
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
Parfait merci pour le tuyau ça permet de partir en week end plus tôt :D