Salut, J'ai quelques difficultés à faire démarrer un apache via dollaru, et j'aimerais bien comprendre pourquoi, bien que j'ai un contournement. Dollaru donc exécute un ksh (le XXX.ksh, le script lancé par l'uproc), qui exécute un ksh (le script qui porte le nom de l'uproc, lancé par le chapeau), qui exécute un bash (le script de gestion d'apache, mode le grand compte chez qui je suis), qui exécute un sh (apachectl). Il s'agit donc de démarrer Apache, via une uproc dollaru et un cheminement biscornu. Il se trouve qu'apache ne démarre pas bien via dollaru, alors qu'en lançant le script depuis un terminal, cela se passe bien. Par "ne démarre pas bien, ce qu'on constate, c'est que seul le port 443 est ouvert, alors que le port 80 devrait l'être aussi. Bon, je ne m'occupe pas du chapeau, je vais commencer au script qui porte le nom de l'uproc. Première constatation, si je remplace ksh par csh, apache démarre bien via dollaru (sh, bash ont le même comportement que ksh). Deuxième constatation, si je rajoute "< /dev/zero" dans le script lors de l'appel au script de gestion d'Apache, ca fonctionne bien aussi avec ksh. Donc, je me suis orienté vers 4 possibilités : - l'environnement, mais cela n'a rien donné - le mode de lancement du shell (restricted, non-interactif) => $- donne hx à la main comme via dollaru - les descripteurs de fichiers ouverts, "test -t 0 && echo "0 ouvert" || echo "0 ferme"" (aussi pour 1 et 2) renvoie "ferme" pour ksh et csh via dollaru - les paramètres du terminal => stty -a renvoie "stty: standard input: Bad file descriptor" pour ksh et "stty: standard input: Inappropriate ioctl for device" pour csh (tiens, enfin une différence !) Donc, 2 questions me taraudent en fait : quelle est la différence entre ksh et csh, et pourquoi apache est le seul logiciel (à ma connaissance) qui pose ce problème au lancement par dollaru ? Voilà, si quelqu'un a une explication pour moi, je lui en serais reconnaissant :-) Merci et bonne journée, Jérémy
Re-, Je me réponds, dès fois que cela serve. On Mon, Apr 2, 2012 at 10:43 AM, Jeremy Monnet <jmonnet@gmail.com> wrote:
Salut,
J'ai quelques difficultés à faire démarrer un apache via dollaru, et j'aimerais bien comprendre pourquoi, bien que j'ai un contournement. En fait, dollaru lance le premier script sans aucun descripteur de fichier ouvert (ni stdin, ni stdout, ni stderr). Du coup, dans le lancement d'apache, les descripteurs 0, 1 et 2 sont utilisés pour les ressources d'apache, et par hasard, le 0 sert au premier socket. Lors du passage en daemon, apache ferme les 3 premiers fd's, dont le 0 donc) et les ré-ouvre sur /dev/null. Et voilà comment un port saute.
Le problème vient bien de dollaru, qui ne devrait pas lancer de process sans descripteurs. Des rapports de bugs assez vieux existent sur le sujet, comme http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=345070 Librement, Jérémy
participants (1)
-
Jeremy Monnet