Linux & Raspberry PiTutoriels

Lancer automatiquement un script shell au démarrage de Debian ou d’Ubuntu

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).

Passionné d'informatique et des nouvelles technologies, je partage avec plaisir mes connaissances sur ce site. Expert Apple, passionné de Linux, de l'infrastructure et de l'hébergement, gestionnaire de serveurs.

Votre réaction à cet article

Read All Comment