Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lancer un script au démarrage

    23 février 2017 à 22:17:19

    Bonjour,

    Tout d'abord je voudrais vous prévenir que OUI j'ai cherché sur internet.

    J'ai le script suivant /root/ir/startir/startup.sh qui fonctionne.

    Je voudrais pouvoir l’exécuter au démarrage de mon raspberry pi, j'ai voulu créer un lien symbolique dans /etc/init.d/:

    mais lorsque j’exécute la commande dans le shell:

    service startup start

    j'ai l'erreur suivante:

    Failed to start startup.service: Unit startup.service failed to load: No such file or directory.
    

    D’où le lien symbolique startup.service, je me suis dit que ca aurait pu marcher mais.... non

    Avez vous une solution à mon problème?

    Merci


    • Partager sur Facebook
    • Partager sur Twitter
    la vérité se cache dans les eviers
      24 février 2017 à 9:03:06


      Salut,

      J'ai le même genre de problème que je n'arrive pas à résoudre.

      Est ce que tes scripts de démarrage ne seraient pas gérés par systemd

      Essaie la commande suivante pour voir si tu as ce logiciel :

      systemctl list-dependencies
      • Partager sur Facebook
      • Partager sur Twitter
        24 février 2017 à 14:33:48

        Salut,

        lorsque j’exécute cette commande j'obtiens une longue liste:

        On dirais bien que c'est systemd qui est utilisé. Peut être que j'ai fait une mauvaise manipulation ou bien que j'ai oublié quelque chose lors de la définition de mon script, voici à quoi ressemble mon script (pour l'instant car il n'est pas terminé):

        #!/bin/bash
        
        python /root/ir/startir/initport.py &
        irw > /root/ir/taildir/irw &
        systemctl start lirc.service 



        -
        Edité par leach74 24 février 2017 à 14:37:27

        • Partager sur Facebook
        • Partager sur Twitter
        la vérité se cache dans les eviers
          24 février 2017 à 14:55:16

          Effectivement tu as systemd et c'est lui qui s'occupe des lancements des programme au démarrage, arrêt, reveil, mise en veille .... etc

          Mauvaise nouvelle je ne saurais pas t'aider puisque je fais des recherches là-dessus mais je n'ai pas réussi à faire ce que je veux.

          Tu devrais commencer à lire de la doc dessus:

          https://doc.ubuntu-fr.org/systemd

          https://doc.ubuntu-fr.org/creer_un_service_avec_systemd

          Avant de suivre mes indications sache que systemd et tout ce qui s'y trouve gère le bon fonctionnement de ton PC. Ne pas les fichier déjà présent ou mieux fait une sauvegarde avant de manipuler

          Grosso-modo tu crées ton script (ça tu l'as fait)

          Ensuite tu crées un service dans /lib/systemd/system/startup.service de la forme :

          [Unit]
          Description=Mon Service startup
          After=multi-user.target
          
          [Service]
          User=root
          ExecStart=/root/ir/startir/startup.sh
          
          [Install]
          WantedBy=multi-user.target
          

           Pour moi toute la difficulté est là : trouver le bon After et Wanted

          Ensuite tu crées un lien de ton service :

          sudo systemctl enable startup.service

           Cela va créer un lien symbolique de /lib/systemd/system/startup.service vers /etc/systemd/system/startup.service ou approximativement dans ce dossier (je ne sais plus précisément)

          Et tu peux vérifier que ton service n'as pas d'erreur avec :

          sudo systemctl status startup.service

          Je te tiens au courant si j'arrive à solutionner mon problème sur ce sujet, de même si tu réussi, poste tes manipulations.

          -
          Edité par psyckyo 25 février 2017 à 19:04:31

          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2017 à 12:04:35

            Salut, ca ne serait pas plus simple de passer par Cron?
            Perso j'utilise Crontab-UI sur mon Raspberry pour gérer facilement les script au démarrage.
            • Partager sur Facebook
            • Partager sur Twitter
              27 février 2017 à 8:49:17


              Salut,

              @cFlavien

              Plus simple oui et non.... Si tu maitrises Cron évidemment, sinon l'outil Systemd n'est pas plus compliqué que Cron : il faut juste apprendre à s'en servir.

              Après j'ai dans la tête qu'il vaut mieux se servir des outils qui tournent nativement plutôt que faire tourner des surcouches de manière permanente.

              Je ne pense pas que quelque taches Cron changent la performance du rasberry, mais par principe je voulais utiliser le système prévu pour ça (et parceque je suis borné aussi ;) ).

              @leach74

              Je réussi à résoudre mon problème. J'avais besoin de relancer mon vpn APRES que la connexion internet soit montée

              J'ai résolu mon problème avec la directive : network-online.target que j'ai mise dans le after :

              After=multi-user.target network-online.target

               Pour ton problème, utilise mon exemple précédent, je l'ai édité et il doit corresponde à ta demande. Dans ExecStart met le chemin de ton script et laisse le reste tel quel.

              Après je ne connait pas les besoins exact de ton script, a-t-il besoin d'une connexion avant de tourner.... etc.

              S'il a besoin de services spécifiques avant de tourner tu dois lui indiquer dans le after.

              • Partager sur Facebook
              • Partager sur Twitter

              Lancer 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