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 :

Problème d'exécution d'un script via le crontab


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 36
    Par défaut Problème d'exécution d'un script via le crontab
    Bonjour à tous !

    Je viens vers vous car je deviens fou avec une tache cron !

    Contexte :
    J'ai une api REST écrite en node.js, l'api est executé dans un screen (nommé api).
    J'ai écrit un petit script de monitoring, qui va checker si l'api est accessible, si non, je kill le screen "api", relance un nouveau screen et y execute la commande du lancement de l'api.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    #!/bin/bash
    url='http://api.*******.com/monit'
    log="$(tail -n 50 /var/log/api/api.log)"
     
    status="$(curl -s -o /dev/null -w "%{http_code}" $url)"
     
    if [ $status = 502 ];
    	then
    		screen -S api-X quit
    		screen -d -m -S api
    		timeout 1 screen -S api -X stuff $'api\n' # api est un raccourcis pour relancer le serveur
    		timestamp=$(date +%s)
    		log_file="/var/log/api/error_"$timestamp".log"
    		echo $log > $log_file
    		echo 'log :'$log_file | mailx -s "API server restarted" adresse@mail.fr
    fi
     
    timeout() {
        time=$1
        command="/bin/sh -c \"$2\""
        expect -c "set echo \"-noecho\"; set timeout $time; spawn -noecho $command; expect timeout { exit 1 } eof { exit 0 }"    
        if [ $? = 1 ] ; then
            echo "Timeout after ${time} seconds"
        fi
    }
    exit 0
    Lorsque j'execute la commande dans le shell, en root et que mon serveur est down, il est bien relancé, tout s'execute comme il faut.

    Par contre, lorsque j'inscrit l'execution au crontab

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *      *       *       *       *  sh /home/api_monitor/monit.sh
    le screen est bien coupé, puis relancé, mais par contre la commande dans le screen n'est pas reconnue.
    J'ai deja localisé le problème, le screen est executé en /bin/sh à la place de /bin/bash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sh-4.2# api
    sh: api: command not found
    sh-4.2#
    J'ai donc essayer d'executer /bin/bash avant d'executer la commande de lancement de mon serveur, mais la cette fois ci c'est la commande qui n'est pas reconnue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    root@ks******:~# api
    /usr/bin/env: node: No such file or directory
    Vous avez tous les détails ! SI vous avez besoin de plus n’hésitez pas a demander.

    Je vous remercie d'avance !

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    le crontab utilises son propre environnement il manqe donc les path les alias et tout ce qui peut exister dans le shell utilisateur.
    il faut en tenir compte dans ton script, et recréant ces valeurs là, les chemins complêts etc...

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 36
    Par défaut
    Danke !

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

Discussions similaires

  1. Problème d'exécution d'un script php avec crontab
    Par jakj82 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 04/02/2014, 12h52
  2. problème d'exécution d'un script via ssh
    Par adiljoun dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 21/07/2008, 20h36
  3. [PHP-JS] Problème d'exécution d'un script php
    Par Yoteco dans le forum Langage
    Réponses: 1
    Dernier message: 06/10/2006, 14h19
  4. Problème d'exécution Acrobat et Word via IE
    Par licorne dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/11/2005, 12h17
  5. Problème d'exécution d'un ActiveX via un Javascript
    Par xjinh dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/10/2005, 14h08

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