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