Raspberry Pi  : Comment Lancer un Programme au Démarrage ?


Quel que soit votre système, lancer automatiquement un script au démarrage n’est pas vraiment intuitif. C’est une question que je vois souvent, j’ai donc décidé de créer un article entier à ce sujet.
Vous essayez de démarrer un script ou une application automatiquement au démarrage ?
Ce n’est pas si compliqué, vous avez plusieurs moyens, je vais tout vous expliquer.

Pour lancer un programme au démarrage du Raspberry Pi, la méthode la plus simple consiste à ajouter la ligne de commande correspondante dans le fichier /etc/rc.local.

Donc oui, c’est bien possible, et il existe plusieurs solutions. Je vais vous les expliquer, et vous aurez le choix entre suivre « les bonnes pratiques », ou de ne garder que la solution la plus simple à retenir.
C’est souvent mon choix préféré, je me passe des bonnes pratiques quand je suis le seul à utiliser l’appareil.

Démarrer automatiquement un programme

Téléchargez mon antisèche !
Toute la syntaxe Python indispensable à connaitre (1 page au format PDF).

Dans cette première partie, j’irai directement au but : comment démarrer n’importe quel script ou programme au démarrage.
Pour l’exemple, j’utiliserai mon script de test qui se trouve dans le dossier Desktop : /home/pi/Desktop/test.sh.

Vous devez adapter cette ligne au script ou au programme que vous souhaitez exécuter.
Si vous ne savez pas quelle commande vous devez exécuter, consultez la deuxième partie de ce guide .

1 – Utilisez le crontab

Cron est un service, lancé automatiquement au démarrage du Raspberry Pi, qui permet à l’utilisateur d’exécuter des commandes planifiées.
Le crontab est un fichier qui va nous permettre de lister ce que nous voulons lancer et quand le démarrer, dans un format compréhensible par le service cron.

Le crontab dispose de nombreuses options pour démarrer un script à une heure précise ou régulièrement (quotidiennement, hebdomadairement, 3 fois par mois, etc.).
D’ailleurs, j’ai un article à ce sujet que vous pouvez lire pour en savoir plus.
Mais ce n’est pas ce que nous recherchons.

Le crontab ajoute également la possibilité de lancer un script au démarrage, avec l’option @reboot.
C’est une première solution que vous pouvez utiliser pour démarrer votre programme automatiquement, et probablement la plus facile à retenir dans cette liste.

Voici comment procéder :

  • Ouvrez un terminal
  • Ouvrez le fichier crontab
    crontab -e
    Si c’est votre première fois dans crontab, vous devez sélectionner un éditeur (appuyez sur Entrée pour nano).
     
  • Vous obtenez un fichier crontab vide, il ressemble à ceci :
  • Collez cette ligne, en commençant par @reboot et en ajoutant le chemin de votre script juste après, comme ceci :
    @reboot /home/pi/Desktop/test.sh
  • Enregistrez et quittez (CTRL+O, CTRL+X avec nano).

Votre tâche est maintenant planifiée pour s’exécuter à chaque démarrage.

2 – Mettez votre script dans /etc/init.d

La deuxième solution que vous pouvez mettre en place est de créer votre script sous /etc/init.d. Je préfère généralement cette méthode pour exécuter un service (comme un service de pare-feu par exemple).

Il y a une procédure à respecter pour que le service se lance au démarrage.
Voici comment faire :

  • Créez un nouveau fichier dans /etc/init.d :
    sudo nano /etc/init.d/myservice
    Modifiez le nom du fichier pour le rendre explicite.
  • Collez ces lignes (c’est un exemple) :
!/bin/bash
### BEGIN INIT INFO
# Provides: MyService
# Required-Start:    $all
# Required-Stop:
# Default-Start:     5
# Default-Stop:      6
# Short-Description: Your service description
### END INIT INFO

touch /home/pi/myservice_test
  • Les commentaires au début sont obligatoires pour l’exécuter au démarrage (runlevel 5).
    Modifiez le nom et la description du service pour expliquer ce qu’il fait.
  • Enregistrez votre fichier et quittez (CTRL+X).
  • Ajoutez l’autorisation d’exécution à votre service :
    sudo chmod +x /etc/init.d/myservice
  • Enfin, vous devez dire au système de le lancer au démarrage en utilisant cette commande :
    sudo update-rc.d myservice defaults

C’est vraiment le minimum pour que ça fonctionne.
Le but ici est simplement d’exécuter un service au démarrage.
Si vous souhaitez le faire correctement, vous devez ajouter au moins une option de démarrage, d’arrêt et de redémarrage à votre service.
Vous pouvez trouver une documentation détaillée ici si c’est ce que vous cherchez à faire.

Redémarrez pour essayer, et si tout est correct, votre service doit s’exécuter à chaque démarrage de votre Raspberry Pi.

3 – Créer une tache Upstart

La troisième option consiste à créer une tache « Upstart ».
Dans la version précédente de Raspberry Pi OS, il était possible de gérer cela graphiquement, mais sur Buster cela ne semble plus être disponible.

Voici comment faire avec un fichier de configuration :

  • Créez un fichier dans /etc/init (pas init.d !)
    sudo nano /etc/init/myjob.conf
  • Collez le contenu suivant :
description "my job"
start on startup
task
exec /home/pi/Desktop/test.sh
  • N’oubliez pas d’adapter le nom et la description du fichier pour vous souvenir de quoi il s’agit 

C’est tout !
Il suffit de créer ce fichier pour qu’il fonctionne à chaque démarrage.

Bonus :
Il n’y a pas de moyen graphique pour créer ces tâches, mais vous pouvez gérer les tâches Upstart que vous souhaitez exécuter au prochain démarrage :

  • Allez dans le menu principal > Préférences > Main Menu Editor
  • Dans le menu de gauche, choisir Préférences et cochez la case « Desktop Session Settings » :
  • Fermez cette fenêtre et retournez dans le menu principal > Préférences, puis ouvrez Desktop Session Settings :
  • Ici, vous pouvez voir la liste des tâches Upstart et les activer ou les désactiver :

4 – Ajoutez une ligne dans /etc/rc.local

Enfin, la méthode rc.local est également très simple, car il vous suffit de vous souvenir du nom du fichier pour savoir quoi faire

Le fichier rc.local est un script destiné à l’administrateur système (vous !).
Au démarrage, c’est l’une des dernières étapes exécutées (à la fin du niveau d’exécution multi-utilisateur). C’est donc exactement ce dont vous avez besoin pour exécuter un service personnalisé.

Voici comment procéder :

  • Ouvrez le fichier rc.local :
    sudo nano /etc/rc.local
  • Insérez votre script ou service juste avant la ligne «exit 0»
    De cette manière :
  • Enregistrez et quittez (CTRL+X)

Et c’est tout, il n’y a rien d’autre à faire.
Vous pouvez redémarrer maintenant pour essayer si vous le souhaitez.

Maîtrisez Raspberry Pi en 30 jours
10% de remise aujourd'hui !
Téléchargez le livre numérique.
Découvrez les secrets du Raspberry Pi à travers un challenge de 30 jours.

Trouver la commande à lancer

Avant d’essayer les solutions précédentes pour démarrer automatiquement un programme au démarrage, vous aurez peut-être besoin d’aide pour savoir exactement quoi exécuter.
Malheureusement, Raspberry Pi OS Buster n’inclut pas d’outil pour démarrer les applications au démarrage, vous devez donc trouver la ligne de commande correspondante.
Comme je ne sais pas exactement ce que vous voulez exécuter, je vais vous donner les trois options.

Exécuter un script

Si votre objectif est d’exécuter un script, la ligne de commande sera facile à trouver, c’est le chemin et le nom du script.

Par exemple, si votre script est dans /usr/local/bin et que le nom du script est start_script.sh.
Vous pouvez utiliser la commande suivante dans l’une des 4 solutions précédentes pour démarrer votre script au démarrage :
/usr/local/bin/start_script.sh

N’oubliez pas d’ajouter l’autorisation d’exécution avec :
chmod + x /usr/local/bin/start_script.sh

Exécuter une commande

La deuxième option consiste à exécuter une commande au démarrage.
La solution est également très simple si vous savez exactement ce que vous voulez exécuter.
Les problèmes peuvent provenir du chemin d’accès à la commande.

Chaque commande (htop, nano, mail, etc.) est installée à un emplacement spécifique de votre système (/usr/local/bin, /usr/bin, etc.).
La plupart des commandes fonctionneront directement, sans aucune indication de chemin.
Mais pour certains programmes, souvent moins connus, les projets GitHub ou autres (je pense à AlexaPi par exemple), ce n’est pas le cas, il faut donner le chemin complet.

Si vous n’avez aucune idée de l’emplacement de l’exécutable, voici quelques astuces.
Vous pouvez notamment utiliser la commande « which » pour le trouver :
which <COMMAND>

Voici un exemple :

Maintenant que vous connaissez le chemin, vous pouvez utiliser « /usr/bin/php » dans votre fichier de configuration.

Si cela ne fonctionne pas, la commande « find » peut également vous aider :
sudo find / -iname php

Téléchargez mon antisèche !
Toute la syntaxe Python indispensable à connaitre (1 page au format PDF).

Trouver la commande

Mon dernier conseil concerne un programme que vous exécutez habituellement directement à partir du menu principal.
Comme vous ne connaissez pas la ligne de commande correspondante, il est difficile de la démarrer automatiquement.
Mais il y a une solution facile pour la trouver :

  • Dans le menu principal, allez dans Préférences > Main Menu Editor.
  • Sélectionnez l’application que vous souhaitez démarrer.
    Ils sont triés de la même manière que dans le menu principal, alors parcourez les catégories si nécessaires.
  • Cliquez ensuite sur « Propriétés » à droite.
  • Une fenêtre apparaîtra avec les arguments de démarrage.
    Dans cette fenêtre, vous pouvez voir la commande exacte utilisée lorsque vous cliquez dessus dans le menu principal.

Vous avez tout ce dont vous avez besoin pour appliquer l’une des quatre solutions que nous avons vues précédemment.
Si vous avez besoin de l’emplacement du chemin, consultez mon conseil précédent avec la commande which.

Initiation au Raspberry Pi
10% de remise aujourd'hui !
Visionnez ma formation vidéo pour démarrer du bon pied.
Découvrez le Raspberry Pi, le matériel, ses logiciels particuliers et créez vos 5 premiers projets avec moi.

Conclusion

Voilà, vous connaissez 4 solutions pour démarrer automatiquement un programme au démarrage.
Faites votre choix en fonction de votre programme et de la méthode dont vous vous rappellerez le plus facilement.

Vous pouvez également utiliser d’autres solutions comme systemd, consultez le wiki Debian si vous voulez en savoir plus à ce sujet.

Maîtrisez Python sur Raspberry Pi
10% de remise aujourd'hui !
Téléchargez le livre numérique.
Envie d'aller un peu plus loin que faire clignoter une LED ? Vous avez besoin de ce livre pour passer à des projets plus avancés.

Ressources supplémentaires pour votre Raspberry Pi

Initiation au Raspberry Pi en vidéo
Si vous débutez et voulez passer rapidement à la vitesse supérieure, j’ai exactement ce qu’il vous faut.
Regardez ma formation vidéo qui vous aidera à démarrer du bon bien, choisir votre matériel, installer les meilleures applications et vous lancer directement dans vos premiers projets avec mon aide.
Regarder les vidéos dès maintenant

Maîtrisez votre Raspberry Pi en 30 jours
Vous avez besoin de plus ? Si vous êtes à la recherche des meilleures astuces pour devenir expert sur Raspberry Pi, ce livre est fait pour vous. Développez vos compétences sous Linux et pratiquez via de nombreux projets en suivant mes guides étape par étape. 10% de remise aujourd’hui !
Télécharger le livre au format PDF ici

Maîtrisez Python sur Raspberry Pi
Pas besoin d’être un génie pour coder quelques lignes pour votre Raspberry Pi.
Je vous apprends juste ce qu’il faut sur Python afin de réaliser n’importe quel projet. La seconde partie du livre est d’ailleurs consacrée à des exemples de projets ou je vous guide pas à pas.
Ne perdez pas de temps, apprenez le strict nécessaire et économisez 10% avec ce lien :
Télécharger maintenant

Autres ressources pour profiter de votre Raspberry Pi
J’ai regroupé toutes mes recommandations de logiciels, sites utiles et de matériel sur cette page de ressources. Je vous invite à la consulter régulièrement pour faire les bons choix et rester à jour.
Visiter les pages ressources


Ce tutoriel ne marche plus à 100%? Prévenez-moi pour que je le mette à jour!

Patrick Fromaget

Je suis l'auteur principal et le créateur de RaspberryTips. Mon but est de vous aider sur tous vos problèmes qui concernent Raspberry Pi en publiant des guides détaillés et des tutoriels rapides. Dans la vraie vie, je suis administrateur système (Linux principalement) avec une solide expérience dans le développement web.

Recent Posts

"Maitrisez Python sur Raspberry Pi" est enfin disponible en français (10% de réduction cette semaine)

X