Lire un article aléatoire
Bienvenue sur le nouveau design du site Geek on Web ! Ce design a été créé afin de correspondre à celui choisis pour l'app iOS du site que j'ai développé et qui arrivera prochainement sur l'App Store d'Apple sur iOS, pour iPhone et iPad.

Geek on Web

L'app iOS compagnon de Geek on Web

Bientôt disponible

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.

Geek on Web

L'app iOS compagnon de Geek on Web

Bientôt disponible

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

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

    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…

  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

  3. ihsen 07/05/2023

    merci

  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.

Laisser un commentaire