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 de chemin avec cron


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Par défaut Problème de chemin avec cron
    Mon fichier shell sert a lancer un serveur.
    je fais un * * * * * /usr/local/sbin/S3DServer_script start >> /root/cmd.log

    et en shell cela fonctionne.

    par contre quand je le fais en cron j'ai le message
    Starting S3DServer Advanced 1.5.1 for Linux
    Couldnt find S3DServer-1.5.1-Advanced-Linux

    alors que S3DServer-1.5.1-Advanced-Linux se trouve dans /usr/local/sbin/ (le rep ou est lancé le script dans le cron).


    le code de la méthode est :
    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
    28
    29
    30
    31
    start)
    		if [ -e $S3DServerLife ]; then
    			echo "S3DServer Advanced 1.5.1 for Linux seems to be running";
    			echo "If you are sure the server is not running, delete $S3DServerLife"
    			exit 1
    		else
    			echo "Starting S3DServer Advanced 1.5.1 for Linux"
    			if [ -e S3DServer-1.5.1-Advanced-Linux ]; then
    				if [ ! -x S3DServer-1.5.1-Advanced-Linux ]; then
    					echo "S3DServer-1.5.1-Advanced-Linux is not executable, trying to set it"
    					chmod u+x S3DServer-1.5.1-Advanced-Linux
    				fi
    				if [ -x S3DServer-1.5.1-Advanced-Linux ]; then
    					./S3DServer-1.5.1-Advanced-Linux &
                        for c in $(seq 1 300); do
                            if [ ! -e $S3DServerLife ]; then
                                echo -n "."
                                sleep 1
                            else
                                echo "done"
                                break
                            fi
                        done
    				else
    					echo "S3DServer-1.5.1-Advanced-Linux is not executable, fix this"
    					exit 4
    				fi
    			else
    				echo "Couldnt find S3DServer-1.5.1-Advanced-Linux"
    				exit 5
    			fi
    fi
    ;;

  2. #2
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Toujours aussi difficile de te suivre... Enfin, je crois avoir décrypté ce que tu essaies de décrire. Dis-moi si c'est bien ça:

    Dans un répertoire, j'ai un script qui appelle un exécutable situé dans le même répertoire. Depuis le SHELL, lorsque je suis dans ce répertoire, je lance le script qui lance l'exécutable, tout va bien! Cependant, lorsque je lance le script depuis le service cron, j'ai l'erreur "exécutable introuvable".

    Si c'est bien là le problème, je vais essayer de t'expliquer clairement.
    * Depuis crontab, tu indiques bien le chemin complet, sinon cron ne trouvera pas le script tout seul: lui est dans /root et le restera (à moins qu'on lui indique de changer).
    * Depuis le script, tu demandes à cron de lancer l'exécutable sans lui dire où le trouver. Donc cron va chercher dans sa liste de chemins autorisés ($PATH). Or /usr/local/sbin/ n'est pas dans sa liste. Donc cron a raison de t'injurier.

    Cette manière de faire est très importante parce que c'est un moyen d'éviter les chevaux de Troie (lancer un exécutable qui n'est pas celui qu'il prétend être, et qui d'ailleurs ne se trouve pas à l'endroit habituel). Question de sécurité, spécialement pour le super-utilisateur root!

Discussions similaires

  1. problème de chemin avec getImage()
    Par L0007 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 06/02/2008, 12h23
  2. [Wamp] Problème de chemin avec PEAR.
    Par R.L. dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 06/12/2007, 22h54
  3. Problème de batch avec Cron.exe
    Par jpberub dans le forum Windows
    Réponses: 1
    Dernier message: 25/07/2007, 21h08
  4. problème de chemin avec la fonction fopen
    Par stars333 dans le forum Langage
    Réponses: 3
    Dernier message: 10/05/2007, 20h39
  5. [VBS]Problème de chemin avec les " " (espace)
    Par pierre1256 dans le forum VBScript
    Réponses: 3
    Dernier message: 16/02/2006, 18h53

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