Page 1 sur 1
[bash] Si je ferme la fenête ? Exécution terminée ou pas ?
Publié : lun. 18 janv. 2010, 17:50
par sunseb
Bonsoir,
Petite question : admettons que je lance un script sous BASH, que celui-ci est en train de s'exécuter, et que je ferme la fenêtre...
Est-ce que mon script va s'arrêter ou le processus continuera en arrière-plan ?
Merci à ceux qui répondront à cette question existentielle...

Re: [bash] Si je ferme la fenête ? Exécution terminée ou pas ?
Publié : lun. 18 janv. 2010, 17:52
par benjarobin
Il se ferme, utilise "screen" pour pouvoir le faire continuer en arrière plan
Re: [bash] Si je ferme la fenête ? Exécution terminée ou pas ?
Publié : lun. 18 janv. 2010, 17:58
par tuxce
ou nohup, dtach etc...
Re: [bash] Si je ferme la fenête ? Exécution terminée ou pas ?
Publié : lun. 18 janv. 2010, 18:08
par sunseb
Merci.
Et même dans le cas où je redonne la main au terminal avec le & en fin de commande ? Si je comprends bien, le terminal c'est comme une session à part entière, dès qu'on ferme le terminal, tous les processus se ferment également ?
Re: [bash] Si je ferme la fenête ? Exécution terminée ou pas ?
Publié : lun. 18 janv. 2010, 18:25
par tuxce
Ça dépend de la commande, si elle est attachée au terminal, elle va se terminer, sinon non.
Re: [bash] Si je ferme la fenête ? Exécution terminée ou pas ?
Publié : lun. 18 janv. 2010, 20:48
par Addict7
Pour aller un peu plus dans le détail, par défaut, quand tu lance un processus depuis un terminal, ce terminal est concidéré comme processus père, et ce que t'a lancé comme processus fils. Sous linux la logique est que quand un processus est tué, il envoie un signal pour tuer ses fils (ouais c'est gore).
Du coup si tu fait rien de particulier (genre screen), fermer un terminal fermera donc forcement tout ce que t'a lancé avec le terminal.
Re: [bash] Si je ferme la fenête ? Exécution terminée ou pas ?
Publié : lun. 18 janv. 2010, 21:46
par tuxce
Addict7 a écrit :Pour aller un peu plus dans le détail, par défaut, quand tu lance un processus depuis un terminal, ce terminal est concidéré comme processus père, et ce que t'a lancé comme processus fils. Sous linux la logique est que quand un processus est tué, il envoie un signal pour tuer ses fils (ouais c'est gore).
C'est dans l'autre sens que ça se passe (du coup c'est beaucoup moins gore), c'est le fils qui envoie un signal au père et juste pour l'informer qu'il s'arrête, le père en fait ce qu'il veut, ce qui peut entraîner l'état de zombie si le père ne lit pas le signal.
Ce qui ferme les process fils d'un terminal, c'est propre à bash (et à la plupart des shells quand ils sont en mode interactif), s'il reçoit un SIGHUP, il le renvoie à tous ses fils, d'où la commande no
hup
Re: [bash] Si je ferme la fenête ? Exécution terminée ou pas ?
Publié : lun. 18 janv. 2010, 22:01
par Addict7
Ho en effet mea culpa, je m'emballe et je confond les signaux posix avec ceux de mon projet de recherche :/