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

Linux Discussion :

Vérifier si le serveur X est lancé


Sujet :

Linux

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Vérifier si le serveur X est lancé
    Bonjour

    Je rencontre un petit soucis avec le code suivant qui permet de vérifier si le serveur X est lancé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if [ -s `ps -aux | grep X` ]; then
       echo "Attention, le serveur X n'est pas lancé."
       exit 0
    fi
    Il m'indique le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [: 32651: unexpected operator/operand
    Qu'en pensez-vous ?

    Merci
    .Olivier

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Sans vraiment répondre à ta question, j'ai plutôt ca comme erreur avec ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
    ./test_bash: line 1: [: too many arguments
    P.S.: enlève le "-" avant aux. Ca ira déjà mieux.

  3. #3
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour

    Ta solution ne change pas le message à l'écran

    Puis, j'utilise KSH
    .Olivier

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #!/bin/ksh
     
    if [ -s 'ps aux | grep X' ]; then
       echo "Attention, le serveur X n'est pas lancé."
       exit 0
    else
       echo "X est lancé."
    fi
    Ce code marche chez moi et me donne "X est lancé".
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Davidbrcz: désolé mais chez moi, cela ne fonctionne pas.

    Essaye ce script en mode console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if [ -s `ps aux | grep X` ]; then
       echo "Attention, le serveur X n'est pas lancé."
       exit 0
    fi
     
    echo "coucou"
    Logiquement, tu verras apparaître coucou donc le script n'est pas bon.

    Teste-le ensuite en mode graphique et comme par hasard, coucou s'affiche aussi

    En revanche, tu peux tester le script suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ ! -f /tmp/.X0-lock ]; then
    	echo "Attention, le serveur X n'est pas démarré."
    	exit 0
    fi
     
    echo "coucou"
    Se basé sur le fichier temporaire n'est pas non plus la meilleure solution, mais il a le mérite de fonctionner

    D'autres avis ?
    .Olivier

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Points : 329
    Points
    329
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ps $(cat /tmp/.X0-lock ) &>/dev/null && echo "X running" || (echo "X not running"; exit 1;)

  7. #7
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Citation Envoyé par tamiel Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ps $(cat /tmp/.X0-lock ) &>/dev/null && echo "X running" || (echo "X not running"; exit 1;)
    Quel est l'avantage de ce code par rapport à celui que j'ai fourni un peu plus haut. Il est un peu plus long mais à part cela ?

    Merci
    .Olivier

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Points : 329
    Points
    329
    Par défaut
    Je teste le pid du serveur X pour savoir s'il tourne réellement.

  9. #9
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Deux remarques :
    1) vas te montrer aussi ta commande "grep X", car "ps aux" affiche les arguments de "grep". Donc cette commande retourne toujours "vrai" que X soit là ou pas.

    tu pourrais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps aux | grep -v grep | grep X
    mais c'est moche

    le mieux c'est que ps ne montre pas les arguments.
    utilises plutotequivalent BSD
    2) "if" sert à tester le retour d'une commande.
    Le "[" est l'equivalent de la commande "test" qui permet de comparer des variables et retourne vrai ou faux en fonction du test

    pour tester le retour d'un "grep", pas la peine de mettre des "[...]" puisque grep est une commande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ps ao comm | grep X >/dev/null; then
        echo X est la
    fi
    ou plus joli en rendant grep silencieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ps ao comm| grep -q X ; then
        echo X est la
    fi
    ou carrement plus court

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps ao comm | grep -q X && echo X est la

  10. #10
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Merci pour toutes ces informations
    .Olivier

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

Discussions similaires

  1. Vérifier si un processus est lancé ou non
    Par AZzjeioafh dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 03/12/2009, 18h55
  2. Vérifier si framework est lancé
    Par coye dans le forum Windows Forms
    Réponses: 7
    Dernier message: 23/07/2009, 11h30
  3. vérifier qu'un script n'est pas déja lancé
    Par Ganondorf dans le forum Langage
    Réponses: 7
    Dernier message: 16/10/2008, 18h32
  4. Socket - Vérifier si le serveur est ouvert
    Par plouf3070 dans le forum Langage
    Réponses: 1
    Dernier message: 30/03/2008, 16h04
  5. vérifier si explorer.exe est lancé.
    Par gregure dans le forum Windows
    Réponses: 3
    Dernier message: 31/07/2007, 18h41

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