Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Lancement d'un script lors du boot
#1

Bonjour,

Je suis en dernière année de BTS IRIS (Informatique et Réseaux en Industries et Services), et j'ai comme partie de mon projet d'entrer dans une base de donnée la dernière mise en tension.
J'ai donc trouvé utilise d'exécuter un script au démarrage qui fait un UPDATE sur ma base de donnée. J'ai donc un script SQL qui contient les requêtes SQL, un fichier SH qui me connecte à Mysql et qui me redirige sur le script SQL de requêtes.

Le souci c'est que ce fichier .SH devrait s'exécuter au démarrage, et pour palier à mon problème j'ai cherché sur internet (pour vous dire que j'ai cherché je ne viens pas les mains vides), et j'ai trouvé une parcelle de code, que j'ai adapté je vous copie tout ça !

PS : Ce fichier est placé dans /etc/init.d

[Image: 593082Script1.jpg]

Comme vous pouvez le voir, il fait appel à mon script .sh

Mon souci vient peut être du code, ou peut-être des commandes suivantes.

sudo chmod +x Exec_Boot ==> pour le rendre éxecutable.

sudo update-rc.d Exec_Boot defaults ==> pour l'activer au boot. J'ai 3 warnings mais aucune erreur.

sudo Exec_Boot start ==> Lancer le service :

-Sur cette dernière commande l'action se fait mon script est chargé et la base de donnée modifiée.

En revanche mon script ne se lance pas au démarrage !!

Pouvez vous me filer un petit coup de pouce ? OSmile

PS²: Le fichier Exec_Boot que j'ai créé n'a aucune extension celui vient peut-être de là ?
Répondre
#2

Salut,

Tu fais un "update-rc.d Exec_Boot defaults " , mais ton serveur mysql n'est peut être pas démarré.
Il faut regarder dans les logs et ne pas mettre "update-rc.d Exec_Boot" avec defaults mais mettre un delai.
Montre ton script_mac.sh.

@+ FB.
Répondre
#3

Bah le souci c'est que j'ai tenté une autre manip avec rc.local je les ais mis dedans je les retrouve plus :mad:
Répondre
#4

Houlà, ça me paraît bien compliqué ça...
Pourquoi pas "tout bêtement" une tâche CRON qui s'exécute au démarrage ?

Aller dans le fichier cron :
Code :
crontab -e
Y rajouter la ligne pour l'exécution de ton fichier à chaque démarrage (et donc reboot aussi) :
Code :
@reboot /chemin/vers/ton/fichier/Script_Mac.sh
Répondre
#5

Salut Hawkeye

L'éxecution du cron se fait avant le lancement de mysql, et il ne pourra pas faire sa requête.
@+ F.B.
Répondre
#6

Exact, autant pour moi FBPY... :8
Sinon, il y a aussi une autre solution (un peu plus longue mais peut-être qui solutionnera ton problème (moi je l'utilise pour mes relevés de sondes thermiques en cas de coupure réseau)).

En fait, dans ton cas, il s'agit de "contourner" le cas où le service mysql n'est pas démarré.
  1. Au démarrage, via le cron (@reboot) par exemple, tu enregistres les infos souhaitées (date, heure...) directement sous forme de requêtes SQL (INSERT...) dans un fichier .sql créé lors de cet enregistrement.
  2. Ensuite, par le biais d'un autre script, toujours exécuté via un cron toutes les x minutes/heures, tu vérifies l'existence de ce fichier .sql, et s'il existe, tu importes son contenu avec la commande mysqldump.
  3. Enfin une fois l'import terminé, tu supprimes le fichier.
Répondre
#7

Salut,

A essayer : http://www.raspberrypi-spy.co.uk/2015/02...y-pi-boot/
Répondre
#8

Je pense que la bonne solution est bien /etc/init.d.
Par contre, il y a une erreur dans le fichier que tu as mis dans /etc/init.d qui peux poser problème.

Tu as mis :
Code :
./etc/init.d/Script_MAC.sh
Il vaut mieux que tu enlève le point en début de la ligne pour avoir :
Code :
/etc/init.d/Script_MAC.sh

Ce point veut dire "à partir du répertoire courant". Au moment où est lancé le script, si le répertoire courant est "/" ça marchera.
Sinon tu auras une erreur ...

Pour vérifier qu'il n'y a pas de problème, il faut que tu testes avec "sudo service le_nom_du_fichier_dans_init_d start".
Bien sûr, il faut aussi avoir rendu le fichier exécutable avec la commande
Code :
chmod 755 /etc/init.d/le_nom_du_fichier_dans_init_d

Dernier point, ton script /etc/init.d/Script_MAC.sh ne devrait pas se trouver dans /etc/init.d/, mais bon ce n'est pas très grave.

Une fois que tout va bien, il faut dire au système de lancer le fichier au démarrage.
Par exemple avec
Code :
sudo update-rc.d le_nom_du_fichier_dans_init_d defaults

Tu peux jeter un œil ici http://www.leeroy.me/utilisation-de-upda...u-systeme/.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)