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

Paul

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.

Related Posts

Générer un rapport d’utilisation de la batterie de son PC Windows

J’écris un article assez court ce midi afin de vous donner une commande qui permet de compiler et de générer un rapport rassemblant différentes informations sur l’utilisation de la batterie…

[Windows] Créer une image système sur autre chose que du NTFS

Depuis Windows 7, Microsoft propose un outil de sauvegarde qui se présente sous la forme d’un outil de création d’une image de son système.Cette image peut ensuite être restaurée afin…

One thought on “Lancer automatiquement un script shell au démarrage de Debian ou d’Ubuntu

  1. 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 ! 😄)

    1. 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…

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

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *