IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

apachectl restart automatique


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Par défaut apachectl restart automatique
    Bonjour, j'ai un problème (évidemment sinon je ne posterai pas ...). J'essaie, par l'intermédiaire d'un script shell de rédemmarer apache en faisant d'abord une vérification de la syntaxe du httpd.conf avec la commande apachectl configtest. Si cette commande me retourne Syntax OK je fait un apachectl restart.
    Je n'y arrive pas parce que je ne peux récupérer le retour de cette commande (Syntax OK) pour la mettre dans une variable par exemple et faire un contrôle dessus. J'ai essayer de plusieurs manière en faisant une redirection dans un fichier par exemple mais la redirection ne se fait pas. Je ne comprends pas pourquoi.

    Mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #!/bin/sh
     
    controle_syntax=`apachectl configtest`
    if [ "$controle_syntax" = "Syntax OK" ]
    then echo "La syntax du fichier httpd.conf est correcte";`apachectl restart`
    fi
    Quand j'execute le script, j'ai Syntax OK qui s'affiche sur mon terminale et c'est tout et apache ne se rédemmare pas.

    Merci d'avance pour votre aide

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    C'est parce que "Syntax OK" est renvoyé sur la sortie d'erreur au lieu de la sortie standard. Essaie avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    controle_syntax=`apachectl configtest 2>&1`

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    C'est parce que "Syntax OK" est renvoyé sur la sortie d'erreur au lieu de la sortie standard. Essaie avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    controle_syntax=`apachectl configtest 2>&1`
    Merci pour la solution et la rapidité de la réponse ! ça marche ! Cela faisait plusieurs heure que je passai dessus.
    Pourriez vous juste m'expliquer rapidement ce que signifie "2>&1" . Je ne suis pas administrateur systeme mais developpeur web. Je fais donc quelques développements serveur selon mes besoins, donc chaque info est bonne à prendre (et à partager) et j'aime comprendre ce que je fais.

    Encore merci

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    C'est de l'Unix. En Unix (et peut-être Windows, je ne sais pas), il existe 2 sorties : la sortie standard (symboliquement numérotée 1) et la sortie d'erreur (symboliquement numérotée 2). Par défaut, tout s'écrit sur la sortie standard. L'idée c'est que si tu veux écrire qqch qui est une erreur ou un message d'erreur, tu passes par la sortie d'erreur. Si tu connais Java, c'est faire System.err à la place d'un System.out.

    Quand on écrit un truc sur l'une des sorties et qu'on utilise un terminal pour l'affichage, ça s'affiche sans distinction visuelle particulière car un terminal n'a qu'un seul dispositif de sortie : tout passe par l'écran. C'est pour ça que ce n'est pas toujours facile de savoir ce qui est sur la sortie d'erreur et ce qui est sur la sortie standard.

    L'intérêt des deux sorties c'est de pouvoir séparer facilement les erreurs des autres messages "normaux". Quand on scripte, pour utiliser la sortie standard, y a rien à faire de particulier car c'est la sortie par défaut :
    va afficher "toto" sur la sortie standard.

    En revanche, pour utiliser la sortie d'erreur, il faut rediriger la sortie standard sur la sortie d'erreur avec la syntaxe >&2 (&2 étant le pointeur vers la sortie d'erreur. Concrètement, si on met juste >2, ça va rediriger la sortie standard sur le fichier appelé "2". On met un & devant le 2 pour faire la différence avec le fichier "2"). On peut reprendre le 1 qui symbolise la sortie standard : 1>&2, mais comme 1 est la sortie par défaut, souvent on ne le met pas. Par exemple :
    va écrire "toto" sur la sortie d'erreur.

    Maintenant, pour ton problème, on sait que la commande affiche un message sur la sortie d'erreur. Comment donc récupérer cette sortie d'erreur pour l'exploiter dans une variable ? Et bien, il faut la rediriger sur la sortie standard car les variables ne connaissent que la sortie standard, d'où la syntaxe inverse : 2>&1 pour renvoyer sur la sortie standard (1 avec & devant pour ne pas dire "le fichier appelé '1'").

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Par défaut
    Un grand merci pour tes explications claires et précises. Un retour aux bases des cours qui commence à dater pour moi ...

    Dernière chose, au cas ou je rencontre le pb pour une autre commande, comment savais tu et comment savoir de manière générale si le résultat d'une commande est envoyé sur la sorti 1 ou 2 ?

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Ben tout comme tu l'as constaté par toi même : si faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_commande > /dev/null
    continue a envoyé un truc sur le terminal, c'est que c'est sur la sortie d'erreur. Et pour vérifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_commande 2> /dev/null
    ne doit plus afficher la sortie d'erreur.

  7. #7
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2006
    Messages : 14
    Par défaut
    Merci, on peut dire que c'est un problème vite résolu !

    Bonne journée à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] [Interface] Redimensionnement automatique
    Par ychalan dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2002, 18h32
  2. BDE : Configurer automatiquement le NETDIR
    Par Harry dans le forum Paradox
    Réponses: 10
    Dernier message: 29/07/2002, 11h33
  3. Génerer automatiquement plusieurs fichier .doc
    Par brunovitch dans le forum QuickReport
    Réponses: 3
    Dernier message: 09/07/2002, 08h19
  4. Re-dimensionnement automatique de composants
    Par ludo_7 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/05/2002, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo