Lire un article aléatoire
15 mai 2022

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

Merci de respecter la loi française en vigueur dans vos commentaires (pas de racismes ou autres éléments injurieux) ainsi que les règles habituelles de courtoisie et de respect de l'autre.

  • Écrivez dans un français compréhensible de tous (pas de patois, de dialecte local ou de « langage SMS ») ;
  • Évitez les fautes de français, relisez-vous avant de publier, vous ne pouvez pas modifier vos commentaires une fois ceux-ci soumis au site ;
  • En cas de problème avec un autre commentateur, contactez l'admin du site via la page de contact.

Le non-respect de ces quelques règles simples pourrait remettre en question la publication de votre commentaire.
Le spam et les commentaires publicitaires sont également systématiquement supprimés.

Merci à tous.

5 commentaires

  1. pim 15/05/2022

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

    Répondre

    1. Paul 15/05/2022

      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…

      Répondre

  2. bob 22/07/2022

    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

    Répondre

  3. ihsen 07/05/2023

    merci

    Répondre

  4. Tar-Pat 26/11/2023

    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.

    Répondre

Laisser un commentaire