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 :

Exécutable dans script shell


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 7
    Points
    7
    Par défaut Exécutable dans script shell
    Bonjour à tous,

    Après pas mal de recherches, je viens quérir votre aide.
    J'ai crée un tout petit sh basique qui consiste à copier un fichier config pour un serveur de jeu, lancer le serveur de jeu, l'arrêter à x minutes, et répéter l'opération.
    Le soucis c'est le lancement du serveur de jeu, à partir de ce moment là plus rien n'est pris en compte, que ce soir CTRL+C avec xdotool, exit, quit etc.
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    echo Chargement de la carte truc
    cp /home/serv/server2/cfg_script/carte_truc/server_cfg.ini /home/serv/server2/cfg/
    sleep 2
    cd /home/serv/server2/
    ./acServer
    sleep 5
    exit
    J'ai bien sûr, cherché un topic similaire avant de créer celui ci, mais je n'ai rien trouvé.
    Si quelqu'un peut m'aiguiller j'en serais très ravi ! Merci par avance et bon week-end !

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 453
    Points : 43 108
    Points
    43 108
    Par défaut
    Quand tu lances ./acServer, cela interrompt le shell en cours jusqu'à fin de la commande. Pour que le shell continue, il te faut ajouter & à la fin

    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Parfait, c'est ce que je cherchais ! Merci !
    Aussi, y'a t-il une commande pour répéter le script lorsqu'il se termine ?

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par user42 Voir le message
    Aussi, y'a t-il une commande pour répéter le script lorsqu'il se termine ?
    Avant de chercher des commandes à 2 balles, as-tu réfléchi que tu pouvais aussi éviter qu'il se termine en mettant le contenu du script dans une boucle...
    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]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Avant de chercher des commandes à 2 balles, as-tu réfléchi que tu pouvais aussi éviter qu'il se termine en mettant le contenu du script dans une boucle...
    Bonjour, merci pour la réponse.
    Ca à peut être l'air évident, mais je suis totalement débutant dans le domaine :-)
    En tout cas merci de m'avoir éclairé, je vais aller me renseigner sur les boucles.

    Merci à vous deux et bon samedi soir !

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par user42 Voir le message
    En tout cas merci de m'avoir éclairé, je vais aller me renseigner sur les boucles.
    Une boucle s'écrit de la façon suivante
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while commande0; do
         commandeX
         commandeY
         commandeZ
    done

    Elle permet d'exécuter les 3 commandes X, Y et Z tant que commande0 est vraie. C'est peut-être le détail le plus inusité du shell: toute commande, quelle qu'elle soit, renvoie toujours vrai ou faux. Même une commande comme sleep.

    De plus il existe deux commandes true et false qui n'ont pas d'autre but que de renvoyer vrai (et faux).

    Donc pour toi, ça pourra être

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
    echo Chargement de la carte truc
    cp /home/serv/server2/cfg_script/carte_truc/server_cfg.ini /home/serv/server2/cfg/
     
    while true; do
        sleep 2
        /home/serv/server2/acServer &
        sleep 5
    done
    exit

    Ce qui t'exécutera ton truc à l'infini. Bien entendu, il te faudra quand-même trouver une façon d'interrompre cette boucle à un moment ou à un autre...
    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]

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Un grand merci pour avoir pris le temps de m'expliquer tout ça. Je passe le sujet en résolu.

  8. #8
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Je n'aime pas beaucoup cette conclusion. Quelle est la condition d'arrêt ?

    Si on veut répéter un bloc d'instructions:
    • Soit on connaît le nombre d'itérations, et on fait une boucle 'for'. Exemple:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      for ((i=1;i<1000;i++))
      do
          echo $i
      done
      Ici la fin de 999 tours provoque la fin de la boucle.
    • Soit on ne connaît pas le nombre d'itérations, et on fait une boucle while, en précisant ce qui arrête ce processus fou. Exemple:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      while read ligne
      do
          echo $ligne
      done < fichier.txt
      Ici la fin de lecture du fichier provoque la fin de la boucle.


    Mais faire un programme dont on sait qu'on va perdre le contrôle, alors qu'on en est encore à la conception, ce n'est pas bien.
    Pourquoi faire une boucle infinie ?

    "Quelle est la condition d'arrêt de la répétition ?". Voilà la première question qui devrait être posée quand on fait une boucle.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Je n'aime pas beaucoup cette conclusion. Quelle est la condition d'arrêt ?

    "Quelle est la condition d'arrêt de la répétition ?". Voilà la première question qui devrait être posée quand on fait une boucle.
    La réponse peut être "j'arrête quand j'en aurai assez..." ou bien "j'arrête au bout d'un certain temps"...

    Bien sûr, on pourrait aussi demander à chaque fois "voulez-vous recommencer?"

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

Discussions similaires

  1. Exécuter un script shell depuis php
    Par allyass dans le forum Linux
    Réponses: 5
    Dernier message: 12/12/2009, 01h14
  2. Réponses: 10
    Dernier message: 15/07/2008, 11h52
  3. Exécuter un script Shell en Java
    Par hyperman22 dans le forum Langage
    Réponses: 1
    Dernier message: 22/11/2007, 13h07
  4. Exécuter un script shell via le fichier .mailrc
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/06/2007, 18h42
  5. Passwd dans script shell
    Par Caroux dans le forum Linux
    Réponses: 4
    Dernier message: 30/05/2006, 12h47

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