Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Script Bash] Executer un script au démarrage

Sujet résolu
    18 juillet 2013 à 15:44:04

    Bonjours à tous les Zér0s Linuxiens !

    J'ai actuellement un serveur de jeu que je fais tourner sous Lubuntu.

    Je démarre ce serveur grâce au script (très minimaliste) suivant :

    #!/bin/bash
     
    #Se place dans le dossier où se trouve le serveur. 
    cd /home/bruno/bukkit-server/
    
    #Démarre le serveur dans "screen".
    screen java -jar -Xms1024M -Xmx1024M craftbukkit.jar
    

    Ce script marche parfaitement quand je l’appel depuis le terminal, cependant, ce que j'aimerais, c'est automatiser ce script pour qu'à chaque démarrage de l'ordinateur, il s’exécute.

    Donc j'ai pas mal cherché sur internet. Certains disent qu'il suffit de placer le script dans /etc/init.d , d'autres disent qu'il faut faire certaines choses en plus (que je n'ai pas compris ^^).

    Ma question est donc : Comment exécuter ce script à chaque fois que je démarre mon ordinateur et pouvoir avoir accès à la console du serveur dans "screen".

    Voilà, j'espère que c'est assez clair. Je suis un débutant sur linux, j'ai juste suivis le tuto :"Reprenez le contrôle à l'aide de Linux" de Mathieu Nebra, donc s'il vous plaît, n'aller pas trop vite dans vos explications :honte:.

    Merci d'avances pour vos réponses ! :lol:

    -
    Edité par Brunobass 18 juillet 2013 à 15:45:34

    • Partager sur Facebook
    • Partager sur Twitter
      19 juillet 2013 à 9:28:42

      En fait, on met habituellement les scripts qui doivent être lancés au démarrage dans /etc/init.d/ mais ce n'est pas pour cela qu'ils vont se lancer.

      Il faut ensuite utiliser la commande update-rc pour les mettre dans le runlevel que l'on souhaite au démarrage de la machine.

      Donc tu peux faire une recherche sur les runlevels, trouver celui de démarrage de ta machine, et soit utiliser la commande précédente, soit faire un lien symbolique dans le répertoire rcX.d avec X le runlevel de démarrage.

      N'hésite pas si tu as des questions.

      • Partager sur Facebook
      • Partager sur Twitter
        19 juillet 2013 à 15:53:26

        Merci beaucoup pour ta réponse rapide ! 

        Comme tu me l'as dit, j'ai recherché des informations sur le runlevel et grâce à ton conseil j'ai découvert pas mal de choses.

        Donc après avoir regardé le manuel, le web ... j'ai tapé la commande: "update-rc.d craftbukkit.sh defaults".

        Mais quelque chose me turlupine, en effet quand je tape ensuite: "ls -l /etc/rc2.d", avant les noms, je vois S suivi de deux chiffre : "S20craftbukkit.sh" .

        Que signifie ce nombre ? Est-ce l'ordre d'éxecution ? Si c'est bien ça, comment le changer afin qu'il s'execute après tous les autres programmes ?

        Dans le doute de faire une bêtise, je n'ai pas encore essayé de redémarrer la machine. :)


        • Partager sur Facebook
        • Partager sur Twitter
          19 juillet 2013 à 16:04:56

          Si tu veux le mettre à la fin tu peux ajouter des instructions dans le fichier /etc/rc.local qui est exécuté à la fin de tous les services. C'est moins complexe.

          -
          Edité par koloce 20 juillet 2013 à 13:47:01

          • Partager sur Facebook
          • Partager sur Twitter
          -User:"Sais-tu où vont les mails de réclamation ?" -Admin:"/dev/null"
            19 juillet 2013 à 21:05:25

            C'est bon j'ai réussi ! Merci beaucoup.

            Le serveur démarre bien au démarrage de l'ordinateur. Par contre il est exécuté en tâche de fond :/ Y a-t-il un moyen de faire apparaître "screen" en avant-plan pour pouvoir accéder directement aux commandes du serveur ? Avec une option pour screen peut-être ?

            • Partager sur Facebook
            • Partager sur Twitter
              20 juillet 2013 à 11:39:16

              Essai ça : 

              screen -dmS minecraft java -jar -Xms1024M -Xmx1024M craftbukkit.jar

              A la place de minecraft tu peux mettre ce que tu veux, ça sera le nom du screen.

              Ensuite tu peux accéder au screen avec screen -r minecraft (ou le nom que tu as donné à ton screen).

              • Partager sur Facebook
              • Partager sur Twitter
                20 juillet 2013 à 13:56:23

                Merci pour ta réponse, mais malheureusement ça ne marche pas, en fait, le problème doit être que il m'ouvre tout simplement pas le serveur dans screen mais dans un terminal. En effet si je fais "screen -list", il me dit que je n'ai pas de "screen" ouvert, si je fais "screen -r minecraft" ou "screen -r [pid correspondant]" il me dit tout simplement qu'il n'y a pas de "screen" sous ce nom ou ce pid.

                Pourtant je vois bien le serveur tourner dans "top" :/ .

                Je crois qu'il faut que je change quelque chose dans mon script, mais je ne sais pas quoi. Peut être je pourrais ne pas utiliser screen, mais alors j'aimerais quand même avoir accès au terminal dans lequel est lancé le serveur pour pouvoir introduire des commandes.

                • Partager sur Facebook
                • Partager sur Twitter
                  24 juillet 2013 à 18:22:25

                  Bonjour,

                  J'ai exactement le même soucis

                  Dans le cadre d'un serveur de jeux, je souhaite lancer la console du serveur jeux dans un screen pour celà j'ai un script qui est le suivant :

                  #!/bin/bash
                  
                  cd /serv_minecraft/normal/
                  screen -dmS mc_normal ./rtoolkit.sh
                  
                  cd /serv_minecraft/modder/
                  screen -dms mc_mod ./rtoolkit.sh
                  Lorsque je lance ce script manuellement les screens ce lance parfaitement je peut les récupérer avec screen -r mais lorsque que le serveur lance le script au démarrage je ne vois pas les screens mais les serveur sont bien lancer donc avez vous une solution ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 juillet 2013 à 19:35:56

                    Brunobass a écrit:

                    Merci pour ta réponse, mais malheureusement ça ne marche pas, en fait, le problème doit être que il m'ouvre tout simplement pas le serveur dans screen mais dans un terminal. En effet si je fais "screen -list", il me dit que je n'ai pas de "screen" ouvert, si je fais "screen -r minecraft" ou "screen -r [pid correspondant]" il me dit tout simplement qu'il n'y a pas de "screen" sous ce nom ou ce pid.

                    Pourtant je vois bien le serveur tourner dans "top" :/ .

                    Sans aucune certitude, ça ne viendrait pas du fait que le script n'ait pas été lancé par ton compte utilisateur, mais par le système ?

                    Je ne suis absolument pas sûr, mais ça pourrait être une piste. Tu peux vérifier avec ps.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 juillet 2013 à 3:28:06

                      Je pense que c'est une bonne piste mais, y a t-il une solution pour lancé le serveur avec son compte utilisateur ? La solution serait peut-être de ne pas utiliser "screen". Le mieux, pour moi, se serait qu'au démarrage, un terminal apparaisse graphiquement pour pouvoir sans aucune commande, accéder au serveur.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 juillet 2013 à 11:53:59

                        Merci Alexlok, en effet le script était exécuté en root ce faisant les screens étaient rattacher a cet utilisateur. J'ai donc palier le problème en modifiant mon code comme ceci :

                        #!/bin/bash
                         
                        su - nom_utilisateur --command="cd /serv_minecraft/normal/ && screen -dmS mc_normal ./rtoolkit.sh"
                         
                        su - nom_utilisateur --command="cd /serv_minecraft/modder/ && screen -dms mc_mod ./rtoolkit.sh"


                        Merci encore pour votre aide.

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          25 juillet 2013 à 21:16:57

                          Dans ce cas, n'oublie pas de cliquer sur le bouton résolu :-)

                          • Partager sur Facebook
                          • Partager sur Twitter

                          [Script Bash] Executer un script au démarrage

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown