Badgerkiller Posté(e) le 1 août 2006 Partager Posté(e) le 1 août 2006 Bonjour, J'ai un petit problème avec un script bash, celui-ci accepte une source mais pas les autres. Je n'arrive pas à trouver d'où vient le problème. Voici donc le script : PATH=/bin:/usr/bin:/sbin:/usr/sbin USER=user case "$1" in $1) if [ -e $1.cfg ]; source $1.cfg then case "$2" in start) if [[ `su $USER -c "screen -ls |grep $NAME"` ]] then echo "$DESC is already running!" else echo "Starting $DESC" su $USER -c "cd $DIR; screen -dmS $NAME ./$DAEMON $PARAMS" fi ;; stop) if [[ `su $USER -c "screen -ls |grep $NAME"` ]] then echo -n "Stopping $DESC" kill `ps auxwww | grep -v grep | grep -i $USER | grep -i screen | grep -i $NAME | awk '{print $2}'` echo " ... done." else echo "Coulnd't find a running $DESC" fi ;; restart) if [[ `su $USER -c "screen -ls |grep $NAME"` ]] then echo -n "Stopping $DESC" kill `ps auxwww | grep -v grep | grep -i $USER | grep -i screen | grep -i $NAME | awk '{print $2}'` echo " ... done." else echo "Coulnd't find a running $DESC" fi echo -n "Starting $DESC" su $USER -c "cd $DIR; screen -dmS $NAME ./$DAEMON $PARAMS" echo " ... done." ;; status) ps aux | grep -v grep | grep $NAME > /dev/null CHECK=$? [ $CHECK -eq 0 ] && echo "$DESC is UP" || echo "$DESC is DOWN" ;; *) echo "Usage: $0 $1 {start|stop|status|restart}" esac else echo "Error service name dismatch" fi ;; *) echo "Usage: $0 $1 {start|stop|status|restart}" exit 1 ;; esac exit 0 Le script load les sources .cfg qui sont sous cette forme : PATH=/bin:/usr/bin:/sbin:/usr/sbin NAME=service3 DIR=/home/user/.../.../ DAEMON=service_run PARAMS=".........." DESC="Service No 3" En gros voilà ce qui se passe quand j'execute le script : Le script load donc service3.cfg ~$ ./Load.sh service3 start ~$ Service No 3 is already running! ~$ ./Load.sh service3 status ~$ Service No 3 is UP Bon là le service est déjà lancé donc normal. Maintenant avec un autre service. Le script load service7.cfg ~$ ./Load.sh service7 start ~$ Starting Service No 7 ~$ : Aucun fichier ou répertoire de ce types_l ~$ ./Load.sh service7 status ~$ is DOWNNo 7 Pour résumer le script fonctionne pour service3 mais refuse de se lancer pour tous les autres. Ce doit être un truc tout con qui cloche malheureusement mes compétences s'arrêtent là. Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sandeman Posté(e) le 1 août 2006 Partager Posté(e) le 1 août 2006 tu pourrais nous donner la desriptif de service 7? savoir s'il y a pas un espace qui traine ou qqch comme ça sinon, une ch'tite astuce : regarde du côté de pgrep plutôt que ps | grep -v | ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Badgerkiller Posté(e) le 1 août 2006 Auteur Partager Posté(e) le 1 août 2006 tu pourrais nous donner la desriptif de service 7? savoir s'il y a pas un espace qui traine ou qqch comme ça sinon, une ch'tite astuce : regarde du côté de pgrep plutôt que ps | grep -v | ... Service 7 est quasiment pareil que le 3. Ce qui diffère : NAME=service7 au lieu de 3 DIR=/home/user/SerViCe2/service_run au lieu de SerViCe DESC="Service No 7" au lieu de 3 Encore la cfg serait différente mais c'est même pas le cas, bizarre cette histoire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 1 août 2006 Partager Posté(e) le 1 août 2006 start) if [[ `su $USER -c "screen -ls |grep $NAME"` ]] then echo "$DESC is already running!" else echo "Starting $DESC" ~$ Starting Service No 7 jusque là ça correspond... su $USER -c "cd $DIR; screen -dmS $NAME ./$DAEMON $PARAMS" ~$ : Aucun fichier ou répertoire de ce types_l ça serait pas le "cd" qui n'est pas content? Et ce serait bien d'avoir la sortie exacte du programme, parce que là le "~$" on ne sait pas trop ce que c'est... un prompt? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Badgerkiller Posté(e) le 1 août 2006 Auteur Partager Posté(e) le 1 août 2006 start) if [[ `su $USER -c "screen -ls |grep $NAME"` ]] then echo "$DESC is already running!" else echo "Starting $DESC" ~$ Starting Service No 7 jusque là ça correspond... su $USER -c "cd $DIR; screen -dmS $NAME ./$DAEMON $PARAMS" ~$ : Aucun fichier ou répertoire de ce types_l ça serait pas le "cd" qui n'est pas content? Et ce serait bien d'avoir la sortie exacte du programme, parce que là le "~$" on ne sait pas trop ce que c'est... un prompt? Oui oui ~$ prompt Tu penses que c'est "cd" qui fout la merde alors Sinon à part ça il n'y a pas un soucis de mon script genre des "exit" qui manquent etc... Je suis vraiment désolé mais je ne suis pas expert dans ce domaine, je n'ai fait que me baser sur d'autre script et me renseigner sur Google. Ce que j'attends de mon script c'est tout con : ./Load.sh bidule start "Error service name dismatch" vu que bidule ne correspond pas à bidule.cfg ./Load.sh service1 start "Starting service1" lancement OK vu que service1 correspond à service1.cfg qui contient les paramètres $NAME, $DIR, $DESC, .... Il doit y avoir plus simple et plus propre que ce que j'ai pondu mais sans les connaissances on fait avec les moyens du bord. Lien vers le commentaire Partager sur d’autres sites More sharing options...
tuXXX Posté(e) le 1 août 2006 Partager Posté(e) le 1 août 2006 Oui oui ~$ prompt C'est bizarre un prompt en face d'une ligne de sortie standard, normalement les prompts c'est seulement avant les commandes que l'on tape soi-même Tu penses que c'est "cd" qui fout la merde alors C'est possible oui.Sinon à part ça il n'y a pas un soucis de mon script genre des "exit" qui manquent etc... Je suis vraiment désolé mais je ne suis pas expert dans ce domaine, je n'ai fait que me baser sur d'autre script et me renseigner sur Google.Ce que j'attends de mon script c'est tout con : ./Load.sh bidule start "Error service name dismatch" vu que bidule ne correspond pas à bidule.cfg ./Load.sh service1 start "Starting service1" lancement OK vu que service1 correspond à service1.cfg qui contient les paramètres $NAME, $DIR, $DESC, .... Il doit y avoir plus simple et plus propre que ce que j'ai pondu mais sans les connaissances on fait avec les moyens du bord. J'ai pas bien compris ce que vient faire screen dans tout ça... C'est pour lancer les services en arrière-plan sans qu'ils s'arrêtent au logout !? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.