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

Shell et commandes GNU Discussion :

SHELL Linux (gestion erreur)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 126
    Par défaut SHELL Linux (gestion erreur)
    Bonjour à tous,

    Je débute sous Linux et j'essaie de faire un petit script tout simple qui lorsque qu’il n’arrive pas à arrêter un service fait un forcestop en cas d’erreur.

    Exemple.

    .StopService
    si erreur alors
    .ForceStopService

    Merci d’avance,

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Pas facile de t'aider sans connaitre les commandes que tu utilises.

    Ce qu'il faut savoir, c'est que tout programme Unix (quand il est correctement écrit), te renvoie un code d'état indiquant s'il a réussi (état=0) ou pas (état=nb > 0 et < 256) à exécuter la tâche demandée.
    Et toi, tu peux alors tester ce code d'état pour agir en conséquence.

    Ce code d'état est récupéré dans la variable "$?"

    Exemple
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    rm -f /tmp
    if test $? -eq 0
    then
       echo "Le dossier a bien été effacé"
    else
       echo "Le dossier n'a pas pu être effacé"
    fi

    Le shell Unix étant relativement intelligent, il sait tester directement l'état d'un programme sans que tu aies spécifiquement besoin d'évaluer $?. Ca marche parce que, conventionnellement, un état à 0 signifie "vrai" et tout autre signifie "faux"
    Exemple analogue
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if rm -f /tmp
    then
       echo "Le dossier a bien été effacé"
    else
       echo "Le dossier n'a pas pu être effacé"
    fi

    Et ce code d'état est, bien entendu, indépendant de tout message d'erreur éventuel, que celui-ci soit affiché ou pas
    Exemple
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if rm -f /tmp 2>/dev/null
    then
       echo "Le dossier a bien été effacé"
    else
       echo "Le dossier n'a pas pu être effacé"
    fi

    Donc je ne connais pas trop ton ".StopService" et ".ForceStopService" mais si je reprends ton exemple, cela s'écrira alors ainsi
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .StopService
    if test $? -ne 0
    then
       .ForceStopService
    fi

    Ou, plus simplement ainsi
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ! .StopService
    then
       .ForceStopService
    fi

    Ou, si t'es certain de n'avoir qu'une instruction à exécuter, tu pourras utiliser une autre écriture dédiée à ce genre de cas
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    .StopService || .ForceStopService
    Le "||" permettant de lier une seconde commande sur l'état de la première. Si la première renvoie un état "faux", alors le "||" embraye sur la seconde. Sinon il s'arrête. Cela symbolise d'ailleurs la connexion "or" ce qui se comprendra ainsi: exécuter la première commande ou bien alors exécuter la seconde.

    Et (pour info) t'as aussi le "&&" faisant la même chose mais embrayant, lui, la seconde commande sur un état "vrai" de la première (symbolisation de la connexion "and" => exécuter la première et la seconde)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour,

    J'ai pas lu mais je plussoie, rien que pour le temps passé à rédiger un tel message.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 126
    Par défaut
    Merci à tous de vos réponses.
    Je crois pouvoir m'en sortir.
    Bonne journée et encore Merci.

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

Discussions similaires

  1. Erreur ORA-00933 shell linux
    Par xeron33 dans le forum Oracle
    Réponses: 10
    Dernier message: 11/06/2013, 19h04
  2. commande shell avec gestion des erreurs
    Par nymus7 dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 06/08/2008, 13h59
  3. [Formulaire] Gestion erreur saisie d'une requête
    Par b_steph_2 dans le forum IHM
    Réponses: 6
    Dernier message: 05/01/2006, 16h40
  4. [Sécurité] gestion erreur login mdp
    Par oceane751 dans le forum Langage
    Réponses: 19
    Dernier message: 03/11/2005, 11h58
  5. Question Basique Gestion Erreur VBA ...
    Par Le_Phasme dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 13h42

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