OVH Cloud OVH Cloud

Maintient des process en background

8 réponses
Avatar
Pham
Bonjour,

J'ai remarqué que depuis quelques upgrades, lorsque je ferme un terminal
(ou que tue X), les process qui ont été lancé en background à partir de
ce terminal sont aussi fichu en l'air !
Je me rappelle pourtant que cela n'était pas le cas il y a quelque
temps...

Quelqu'un aurait-il une explication ?

Merci.

8 réponses

Avatar
Sébastien Kirche
Oui, "nohup" :

nohup ma_commande &

Ca évite de tuer le process en fermant le terminal...
Avatar
Erwann ABALEA
Bonsoir,

On Mon, 23 Feb 2004, Pham wrote:

J'ai remarqué que depuis quelques upgrades, lorsque je ferme un terminal
(ou que tue X), les process qui ont été lancé en background à partir de
ce terminal sont aussi fichu en l'air !
Je me rappelle pourtant que cela n'était pas le cas il y a quelque
temps...


C'est un fonctionnement normal. Un process qui d'un seul coup n'a plus
de terminal (c'est ce qui se passe quand tu fermes le terminal depuis
lequel tu as lancé ces process) et qui n'a pas été prévu pour ce cas de
figure (c'est très souvent le cas) plante.

Quelqu'un aurait-il une explication ?


Mieux, plusieurs solutions:
- utiliser nohup, ou
- utiliser screen

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
je vous rappelle qu'il est fréquenté par une moyenne d'âge plus faible
que la moyenne. C'est facile de mettre des lois abscons, qui n'évoluent
pas à la vitesse du net, et de dire "eh ben vous n'aviez qu'à lire"
-+- DP in : Guide du Neuneu d'Usenet - Si ya plus moyen de moyenner -+-

Avatar
Sébastien Kirche
Pardon, j'ai confondu solution et explication.
Erwann a expliqué ce qu'il faut.

Sébastien Kirche
Avatar
no_spam
On Mon, 23 Feb 2004 23:06:17 +0100, Pham wrote:

Bonjour,

J'ai remarqué que depuis quelques upgrades, lorsque je ferme un terminal
(ou que tue X), les process qui ont été lancé en background à partir de
ce terminal sont aussi fichu en l'air !
Je me rappelle pourtant que cela n'était pas le cas il y a quelque
temps...

Quelqu'un aurait-il une explication ?


Il faut que le programme aie été lancé dans sa propre session
pour que ça ne soit pas le cas. C'est sans doute un update du shell
qui a changé ce comportement:
si le shell fait un setsid(); au moment de mettre le programme
en background, tout va bien.
Sur mon PC, j'ai une commande setsid qui fait la même chose...
... a regarder, sans doute :-)

Avatar
Pham
On Mon, 23 Feb 2004 23:12:01 +0100, Erwann ABALEA
wrote :

J'ai remarqué que depuis quelques upgrades, lorsque je ferme un
terminal(ou que tue X), les process qui ont été lancé en background
à partir de ce terminal sont aussi fichu en l'air !
Je me rappelle pourtant que cela n'était pas le cas il y a quelque
temps...


C'est un fonctionnement normal. Un process qui d'un seul coup n'a plus
de terminal (c'est ce qui se passe quand tu fermes le terminal depuis
lequel tu as lancé ces process) et qui n'a pas été prévu pour ce cas
de figure (c'est très souvent le cas) plante.

Quelqu'un aurait-il une explication ?


Mieux, plusieurs solutions:
- utiliser nohup, ou
- utiliser screen



Merci pour l'explication.
N'y aurait-il pas un moyen d'utiliser systématiquement nohup quand je
lance un programme en background (ou arrière-plan, désolé pour
l'anglicisme !) ?

Et pour simple culture personnelle, pourquoi a-t-on choisi ce
comportement par défaut ? Est-ce une protection pour éviter les process
orphelins ?


Avatar
Pham
On Mon, 23 Feb 2004 23:41:24 +0100, no_spam

J'ai remarqué que depuis quelques upgrades, lorsque je ferme un
terminal(ou que tue X), les process qui ont été lancé en background
à partir de ce terminal sont aussi fichu en l'air !
Je me rappelle pourtant que cela n'était pas le cas il y a quelque
temps...

Quelqu'un aurait-il une explication ?


Il faut que le programme aie été lancé dans sa propre session
pour que ça ne soit pas le cas. C'est sans doute un update du shell
qui a changé ce comportement:
si le shell fait un setsid(); au moment de mettre le programme
en background, tout va bien.
Sur mon PC, j'ai une commande setsid qui fait la même chose...
... a regarder, sans doute :-)


Ok, merci !
Est-il possible de dire au shell de revenir à l'ancien comportement ?


Avatar
Daniel Déchelotte

| C'est un fonctionnement normal. Un process qui d'un seul coup n'a plus
| de terminal (c'est ce qui se passe quand tu fermes le terminal depuis
| lequel tu as lancé ces process) et qui n'a pas été prévu pour ce cas
| de figure (c'est très souvent le cas) plante.

Aie, c'est moi qui ne comprends plus alors. Si je lance "xcalc &" dans
un xterm, et que je le ferme, xcalc survit tres bien. Tiens, je remarque
qu'il faut fermer le terminal avec exit ou Ctrl-d ; s'il est tue par le
gestionnaire de fenetre (clic sur la croix pour fermer la fenetre,
typiquement), xcalc est tue egalement. Donc xterm fait quelque chose
"d'intelligent" lorsqu'il est tue gentiment...

--
Daniel Déchelotte
http://yo.dan.free.fr/
Avatar
Pham
On Mon, 23 Feb 2004 21:55:37 -0500, Daniel Déchelotte


| C'est un fonctionnement normal. Un process qui d'un seul coup n'a
| plus de terminal (c'est ce qui se passe quand tu fermes le terminal
| depuis lequel tu as lancé ces process) et qui n'a pas été prévu pour
| ce cas de figure (c'est très souvent le cas) plante.

Aie, c'est moi qui ne comprends plus alors. Si je lance "xcalc &" dans
un xterm, et que je le ferme, xcalc survit tres bien. Tiens, je
remarque qu'il faut fermer le terminal avec exit ou Ctrl-d ; s'il est
tue par le gestionnaire de fenetre (clic sur la croix pour fermer la
fenetre, typiquement), xcalc est tue egalement. Donc xterm fait
quelque chose"d'intelligent" lorsqu'il est tue gentiment...



Ah ! J'ai exactement le même comportement !
Merci pour l'astuce !