SSH : Impossible de quitter la session

2009-03-24 Par sujet Thierry Leurent
Bonjour,

J'ai un problème assez étrange.
Je dois démarrer une application qui est répartie sur plusieurs serveurs.
Sur chaque serveur, il existe un script de démarrage dans /etc/init.d/
Sur une des machines, j'ai un script général qui fait des ssh
r...@iautreserveur /etc/init.d/appli start
Une des machine héberge un serveur MicroFocus qui ne peut démarrer
depuis une session SSH (TERM=dumb). L'appli se crache en donnant le
message Run-time message 191: Terminal type not defined (Fatal).
J'ai résolu le problème en forçant la variable TERM à vt100. L'appli se
lance, le script arrive bien à la dernière ligne mais semble s'arrêter là.
Donc mon script principal reste bloqué sur le SSH :(.

- Exit ne fonctionne pas
- Un suicide du process non plus (kill $$).

J'ai essayé de lancer le ssh en ligne de commande idem.
Le script lancé en local sur son serveur, fonctionne et je peux quitter
le terminal (konsole TERM=xterm)
En remote même avec xterm, ça ne fonctionne pas.
J'ai crée un autre script qui se contente de changer la variable TERM et
de faire un ls. Ca fonctionne.


Je n'y comprends plus rien. Comment une appli peut-elle empécher la fin
d'un script et/ou d'une session ?

Quelqu'un a-t-il une idée ?

-- 
Thierry Leurent


-- 
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs From et Reply-To:

Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org



Re: SSH : Impossible de quitter la session

2009-03-24 Par sujet François Cerbelle

Thierry Leurent a écrit :
[...]

Je n'y comprends plus rien. Comment une appli peut-elle empécher la fin
d'un script et/ou d'une session ?
Quelqu'un a-t-il une idée ?


Salut Thierry,

L'appli n'empêche pas la fin du script. Ton script se termine bien. En 
revanche, lorsque ton application passe en mode démon, elle effectue un 
fork (appel système) pour cloner le processus. Le processus père, celui 
que tu as lancé, se termine et te rend la main alors que le processus 
fils reste en mémoire pour effectuer son boulot. Le problème vient 
certainement de la procédure de démonisation qui ne referme pas les 
descripteurs de fichier par défaut (stdin, stdout, stderr). Tant que ces 
descripteurs de fichier ne sont pas refermés (ou redirigés vers d'autres 
sources/destinations comme un fichier ou /dev/null), le processus SSH ne 
pourra pas terminer sa connexion. Il me semble que SSH dispose d'options 
pour résoudre ce problème mais je ne m'en souviens plus (cf man). Sinon, 
tu peux essayer d'ajouter des

 /dev/null 21
à la fin de la commande qui exécute ton appli, ou encore, tu peux lancer 
la commande dans un screen qui capturera ces descripteurs de fichier 
et les libèrera lorsque tu le détacheras avant de refermer ta session SSH.


A+
Fanfan

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists Vous pouvez aussi ajouter le mot
``spam'' dans vos champs From et Reply-To:

Pour vous DESABONNER, envoyez un message avec comme objet unsubscribe
vers debian-user-french-requ...@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmas...@lists.debian.org