Démarrer automatiquement un script Python au lancement de votre Raspberry Pi

Automatiser le démarrage d’un script Python sur un Raspberry Pi simplifie grandement la gestion de vos projets, qu’il s’agisse de domotique, de robotique ou d’un serveur personnel. Cette automatisation assure que vos programmes essentiels se lancent sans intervention manuelle à chaque redémarrage. Voici les sujets que nous allons aborder ensemble :

  • Les principales méthodes de lancement automatique, adaptées aux dernières versions de Raspberry Pi OS.
  • La mise en place d’un service systemd, reconnu pour sa robustesse et sa gestion avancée.
  • La configuration de scripts shell et l’utilisation de cron avec l’option @reboot.
  • Conseils pratiques pour éviter les erreurs fréquentes et assurer la stabilité de vos scripts.

Découvrons comment garantir un démarrage sans faille et efficace de vos scripts Python sur Raspberry Pi.

A lire aussi : Domotique et locations saisonnières : les clés pour protéger vos objets connectés contre le piratage

Pourquoi privilégier systemd pour le lancement automatique de scripts Python sur Raspberry Pi

Depuis plusieurs années, systemd s’est imposé comme la solution la plus fiable et performante pour automatiser le lancement de services et programmes au démarrage d’un système Linux, y compris Raspberry Pi OS. En 2026, cette méthode reste la recommandation principale pour les utilisateurs souhaitant démarrer des scripts Python, car elle offre plusieurs avantages clés :

  • Redémarrage automatique du script en cas de plantage, grâce à la directive Restart=on-failure.
  • Gestion claire des dépendances, par exemple le démarrage du script après l’activation du réseau avec After=network-online.target.
  • Journalisation intégrée qui simplifie le diagnostic en centralisant les logs via journalctl.

Ces caractéristiques permettent de maintenir un service Python toujours disponible, ce qui est essentiel pour des projets nécessitant une fiabilité sans faille. Par exemple, dans un système de surveillance domotique, des arrêts intempestifs peuvent entraîner des failles de sécurité.

Lire également : Domotique simplifiée : créez votre système intelligent facilement avec Raspberry Pi

Comment créer un service systemd pour votre script Python

La mise en place d’un service systemd se fait en plusieurs étapes simples :

  1. Création du fichier de service : avec sudo nano /etc/systemd/system/mon-script.service.
  2. Rédaction du contenu adapté, par exemple :
      [Unit]
      Description=Lancement de mon script Python au démarrage
      After=network-online.target
      Wants=network-online.target
    
      [Service]
      User=pi
      WorkingDirectory=/home/pi/mon-programme
      ExecStart=/usr/bin/python3 /home/pi/mon-programme/mon-programme.py
      Restart=on-failure
      RestartSec=5
    
      [Install]
      WantedBy=multi-user.target
      
  3. Activation et démarrage du service :
    • sudo systemctl daemon-reload
    • sudo systemctl enable mon-script.service
    • sudo systemctl start mon-script.service
  4. sudo systemctl daemon-reload
  5. sudo systemctl enable mon-script.service
  6. sudo systemctl start mon-script.service
  7. Contrôle du statut et des logs :
    • systemctl status mon-script.service
    • journalctl -u mon-script.service -e
  8. systemctl status mon-script.service
  9. journalctl -u mon-script.service -e

Ces étapes garantissent que votre script démarre automatiquement et qu’il redémarre automatiquement en cas de problème, un vrai atout pour la production.

Les alternatives : lancer un script Python au démarrage avec Cron @reboot et rc.local

Avant l’essor de systemd, deux méthodes populaires se partageaient l’automatisation du lancement de script Python :

  • Cron avec l’option @reboot : permet de lancer un script à chaque démarrage système. On ajoute une ligne dans la crontab par :
    @reboot sh /home/pi/lancement.sh > /home/pi/logs/log.txt 2>&1. La sortie du script est redirigée vers un fichier de logs pour vérifier les erreurs. Cette méthode est simple mais n’offre pas la robustesse de systemd (pas de redémarrage automatique facile).
  • Utilisation de rc.local : script traditionnel lancé en fin d’amorçage. Plutôt adapté aux scripts simples, mais moins flexible car rc.local ne gère pas les dépendances ni les erreurs modernes.

Ces méthodes restent valables pour des tests rapides ou des petits projets où la simplicité prime, mais on leur préférera systemd pour un usage sérieux et pérenne.

Comment créer un script shell pour être utilisé avec Cron ou rc.local

Pour ces deux alternatives, il est conseillé de créer un script shell qui s’assure de la bonne exécution du script Python :

  1. Dans votre dossier utilisateur, créez un fichier lancement.sh avec les commandes :
cd /home/pi/mon-programme
/usr/bin/python3 mon-programme.py
  1. Rendez ce fichier exécutable : chmod 755 lancement.sh.
  2. Testez-le manuellement avec sh lancement.sh.

Ensuite, selon la méthode choisie, vous ajouterez la ligne correspondante dans crontab via sudo crontab -e ou dans /etc/rc.local. Cette démarche garantit que votre script Python sera lancé automatiquement dès que le Raspberry Pi démarre.

Les bonnes pratiques pour un lancement automatique sans souci sur Raspberry Pi

Quelles que soient la méthode et la complexité de votre projet, certaines recommandations sont systématiques afin d’éviter des erreurs d’exécution ou des difficultés de maintenance :

  • Utiliser des chemins absolus pour tous les fichiers et interpréteurs Python afin d’éliminer toute ambiguïté lors du lancement.
  • Privilégier un utilisateur spécifique (souvent pi) plutôt que root pour limiter les risques de permissions et sécuriser l’accès.
  • Consulter régulièrement les logs spécifiques au service ou script afin d’identifier tôt les dysfonctionnements.
  • Tester le script indépendamment plutôt que de modifier directement les configurations de démarrage en cas de problème.
  • Assurer une gestion propre des dépendances réseau ou matérielles dans le script, en intégrant des temporisations ou vérifications si besoin.
Étape Commande ou action Bénéfice
Création du service systemd sudo nano /etc/systemd/system/mon-script.service Lancement automatique avec gestion avancée
Activation du service sudo systemctl enable mon-script.service Permet le démarrage au boot sans intervention
Contrôle des logs journalctl -u mon-script.service -e Diagnostic simplifié en cas d’erreur
Utilisation de cron @reboot Ajouter @reboot sh /home/pi/lancement.sh > /home/pi/logs/log.txt 2>&1 dans crontab Lancement simple sans journalisation avancée
Script shell exécutable chmod 755 lancement.sh Assure l’exécution correcte du script Python

Passons maintenant à une vidéo explicative qui détaille la configuration d’un service systemd pour le démarrage de vos scripts sur Raspberry Pi.

Cette seconde vidéo présente les méthodes alternatives avec cron @reboot et rc.local, très utiles pour des scénarios plus simples ou spécifiques.