Dans cet article nous verrons comment lancer vos propres scripts shell (fichier avec l’extension .sh) au démarrage de votre Debian ou de votre Ubuntu.
Je vais ici m’appuyer sur un Raspberry Pi pour rédiger cet article, Raspberry Pi qui tourne sous Raspberry Pi OS Lite (anciennement Raspbian) Buster mais ça fonctionnera aussi avec Bullseye ou Ubuntu 20.04 ou 22.04 par exemple.
J’ai essayé d’être le plus simple possible pour la rédaction de ce tutoriel, et de n’expliquer que ce qui est vraiment nécessaire.
La première chose à faire est de se rendre dans le dossier qui contient les scripts afin de créer notre propre script shell.
cd /etc/init.d
sudo nano monscript.sh
Votre script doit démarrer par cette ligne comportant le shebang et l’interpréteur que vous allez utiliser.
#!/bin/sh
J’utilise celui-ci personnellement, mais il en existe d’autres :
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/bin/awk -f
Au niveau des mentions à préciser au début de vos scripts, normalement, il faut préciser des informations sur le script. Mon script n’étant pas destiné à être partagé, je ne les précise pas par soucis de simplicité et de rapidité de mise en oeuvre, mais je vous les donnes à titre indicatif :
## BEGIN INIT INFO # Provides: RPiPlay Server # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # X-Interactive: false # Short-Description: Serveur AirPlay pour Raspberry Pi ### END INIT INFO
En dessous de ces informations, rédigez votre scirpt en gardant à l’esprit si vous devez préciser des chemins, que votre script sera exécuté par root.
Donc évitez les chemins relatifs du style ~/dossier/monbinaire
.
Ici, on préfèrera des chemins absolus, comme celui-ci, pour reprendre l’exemple précédent : /home/pi/dossier/monbinaire
Une fois votre script rédigé, il faut le rendre exécutable :
sudo chmod +x monscript.sh
Ensuite, avant de l’activer, nous allons vérifier son bon fonctionnement :
./monscript.sh
Afin que votre script se lance automatiquement au débarrage de votre machine, il est nécessaire de créer un fichier de service :
sudo nano /lib/systemd/system/monscript.service
Dans ce fichier, nous placerons le contenu suivant, que vous adapterez à votre cas :
[Service] Description=Serveur AirPlay pour Raspberry Pi Type=oneshot RemainAfterExit=yes ExecStart=/etc/init.d/monscript.sh [Install] WantedBy=multi-user.target
Généralement, il suffira de modifier la description et la ligne ExecStart, qui correspond au chemin du script à exécuter. Ici, en remplaçant monscript.sh par le nom de vos propres scripts.
Si vous souhaitez en savoir plus sur la signification de ces différentes valeurs, je vous renvoie vers la documentation d’Ubuntu.
Notre service étant prêt, il ne nous reste plus, après avoir sauvegardé et quitté le fichier, à l’activer.
sudo systemctl enable monscript.service
On peut aussi exécuter manuellement le service et donc le script, ou vérifier son statut avec les commandes suivantes :
sudo systemctl start monscript.service
sudo systemctl status monscript.service
Lors du prochain reboot de la machine, le service devrait démarrer et exécuter le script associé.
Voilà pour ce tutoriel.
N’hésitez pas à me remonter les éventuelles erreurs ou imprécisions en commentaire de cet article.
Je suis bien évidemment ouvert à la discussion (constructive).
Y’a quelqu’un qui a laissé un pouce vers le bas, faut le choper, le lapider, cl’étriper pour finalement affront ultime l’obliger à utiliser Windows 11 pendant 10 minutes (pas plus, on n’est pas des assassins quand même ! 😄)
Ah ah ah, oui j’ai vu.
Bon en même temps si je laisse la possibilité de mettre des pouces vers le bas, pire, si je choisis de donner cette possibilité, c’est bien parce que je suis d’accord pour que les gens l’utilisent…
Cette calamité ce systemd…à chaque fois que je veux démarrer un service perso, ça merde.
Cannot add dependency job for unit boot_vlan.service, ignoring: Unit not found
merci
C’est parfait. Ça marche parfaitement pour moi. J’ai fait un petit script pour mettre des couleurs sur mon clavier Logitech rétro-éclairé.
Et c’est impeccable.
Merci beaucoup.