Raspberry Pi est un puissant SBC (ordinateur monocarte) que vous pouvez utiliser pour diverses applications et projets. Sa polyvalence réside dans sa capacité à exécuter toutes sortes de programmes, y compris des scripts personnalisés, en partie grâce au système d'exploitation Raspberry Pi et aux autres systèmes d'exploitation basés sur Linux qu'il exécute.

Exécuter un script ou un programme sur le Raspberry Pi est aussi simple que de le trouver sur le système et de l'exécuter. Mais que se passe-t-il si vous souhaitez automatiser ce processus, peut-être parce que votre projet l'exige ou parce que vous souhaitez rationaliser votre flux de travail?

Une réponse à cela est d'apprendre à utiliser systemd.

Qu'est-ce que Systemd?

systemd est une suite de composants système pour la configuration et le comportement des services sur les systèmes Linux modernes. Il est identifié avec un PID (identifiant de processus) de 1 car c'est le premier processus à démarrer au démarrage du système. Dans l'ensemble, le but de systemd est de vous aider à gérer et à exécuter des programmes au démarrage du système. Et c'est ce que vous utiliserez pour lancer votre programme au démarrage sur le Pi.

instagram viewer

Comme mentionné initialement, il existe plusieurs méthodes pour exécuter des programmes au démarrage sur des systèmes Linux, telles que rc.local, cron et autostart. Cependant, systemd arrive à une meilleure solution du lot si vous souhaitez lancer des programmes GUI (interface utilisateur graphique), automatiser les applications pour qu'elles s'exécutent après le début de certains processus système, ou exécuter des programmes encore et encore jusqu'à votre planification travaux.

En rapport: Comment planifier des tâches sous Linux avec Cron et Crontab

Comment utiliser systemd pour lancer des programmes au démarrage

systemd est une méthode légèrement plus compliquée de lancement de programmes au démarrage sur des systèmes Linux. Cependant, la flexibilité de planification qu'elle offre par rapport aux autres méthodes - celles que nous avons mentionnées ci-dessus - l'emporte totalement sur sa complexité dans tous les aspects.

La méthode systemd utilise des fichiers d'unité, qui sont un peu comme des fichiers .ini qui contiennent des informations de codage sur les périphériques, les services, les sockets, la cible de démarrage et d'autres composants système essentiels.

Les fichiers d'unité sont de différents types. Ainsi, en fonction du type de ressource que vous souhaitez déclarer, vous devez choisir un type de fichier unitaire en conséquence. Pour les besoins de ce guide, cependant, nous nous en tiendrons aux fichiers d'unité .service, qui vous permettent de gérer le comportement de démarrage des programmes et des scripts sur le système.

Vous trouverez ci-dessous une description des étapes du lancement d'un script / programme au démarrage à l'aide de systemd.

Créer un service

Pour configurer votre programme pour qu'il s'exécute au démarrage, créez un fichier d'unité de service qui indiquera à systemd quel programme exécuter et quand. Voici comment procéder.

  1. Dans la fenêtre CLI, saisissez sudo nano /lib/systemd/system/display.service. Vous pouvez utiliser n'importe quel nom pour votre service tant qu'il se termine par l'extension .service.
  2. Dans le fichier de service, collez les lignes de code suivantes:
    [Unité]
    Description = PiCounter
    Après = network.target
    [Un service]
    ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
    Redémarrer = toujours
    Utilisateur = pi
    [Installer]
    WantedBy = multi-user.target

Toutes vos options de configuration courantes relèvent du Unité et Installer sections, tandis que les options de configuration spécifiques au service se trouvent dans la section Service.

Voici quelques-unes des paires directive-valeur ci-dessus que vous devrez peut-être modifier:

je. Après: Il détermine quand démarrer le service. Le régler sur network.target garantit que la valeur répertoriée - network.target dans ce cas - démarre avant de commencer l'unité en cours. Cependant, il ne dirige pas une relation de dépendance pour le service à déclencher; cela se fait via d'autres directives telles que Wants, Requiert et WantedBy.

Bien entendu, vous pouvez modifier cette valeur en fonction des exigences de votre projet. Par exemple, si vous souhaitez que votre programme s'exécute après la connexion de votre Raspberry Pi à un réseau, vous pouvez utiliser le network-online.target valeur. Vous pouvez vous référer à Documentation de Fedora sur systemd pour en savoir plus sur ces valeurs.

ii. ExecStart: Il contient le chemin absolu et le nom du programme / script que vous souhaitez exécuter au démarrage. Ainsi, en fonction de ce que vous souhaitez exécuter, vous devez ajouter des valeurs pour ces deux directives.

iii. Utilisateur: Il identifie le nom de votre Raspberry Pi. Si vous avez changé le nom de votre Pi, vous devez mettre cette valeur pour l'utilisateur.

iv. Recherché par: C'est la manière la plus courante de spécifier le déclencheur d'une unité. En le réglant sur multi-user.target, vous pouvez établir une relation de dépendance qui exécutera le programme lorsque le contrôle système sera transmis au shell multi-utilisateur.

De plus, cela exécute également votre programme avant le démarrage du système X-Windows de Pi, ce qui signifie que votre programme s'exécute avant même que vous vous connectiez au système. Si vous souhaitez qu'un script s'exécute avant de vous connecter à votre Raspberry Pi, cela vous permet de le faire.

Les lignes de code ci-dessus fonctionnent pour les programmes non-GUI. Cependant, si vous souhaitez exécuter un programme GUI à l'aide de systemd, vous devez ajouter le code suivant à votre fichier de service:

[Unité]
Description = PiCounter
Après = network.target
[Un service]
Environnement = Affichage =: 0
Environnement = XAUTHORITY / home / pi / .Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Redémarrer = toujours
[Installer]
WantedBy = multi-user.target

Dans la paire directive-valeur ci-dessus, tout ce que vous devez changer est la valeur du ExecStart directif. Remplacez celui du bloc de code par le programme que vous souhaitez exécuter au démarrage. Après avoir rempli le fichier de service, appuyez sur CTRL + O pour le sauver.

Testez le service

Avec le service prêt, vérifiez manuellement s'il fonctionne. Pour cela, tapez la commande suivante dans le terminal: sudo systemctl start display.service. Le service doit exécuter vos instructions avec succès.

Une fois que c'est le cas, terminez-le avec sudo systemctl stop display.service.

Activer le service

Si vous parvenez à exécuter votre programme avec succès en utilisant le service, il est temps de l’activer afin qu’il exécute votre programme automatiquement à chaque fois que vous démarrez votre Raspberry Pi.

Pour ce faire, tapez sudo systemctl activer display.service dans la fenêtre du terminal. Et une fois que c'est fait, entrez redémarrage sudo pour redémarrer votre Pi.

Une fois que votre Raspberry Pi démarre, systemd doit exécuter votre programme selon les instructions fournies.

Automatiser le lancement du programme au démarrage sur Raspberry Pi

Comme la plupart des systèmes Linux, le système d'exploitation Raspberry Pi vous permet également d'accomplir des opérations de plusieurs manières, et il reste également fidèle à la planification des lancements de programmes. Donc, si vous voulez lancer des programmes / scripts GUI au démarrage et que vous voulez un meilleur contrôle sur votre planification, systemd est clairement une meilleure méthode.

Cela dit, si vous souhaitez une solution plus simple ou si les exigences de votre projet nécessitent une planification spécifique, vous pouvez consulter notre guide pour Exécution d'un programme ou d'un script Raspberry Pi au démarrage pour apprendre plus.

E-mail
La feuille de triche ultime des commandes Raspberry Pi

Vous voulez tirer le meilleur parti de votre Raspberry Pi? Voici de nombreuses commandes utiles pour naviguer dans le terminal du Pi et programmer ses broches GPIO.

Lire la suite

Rubriques connexes
  • DIY
  • Tarte aux framboises
A propos de l'auteur
Yash Wate (8 articles publiés)

Yash est rédacteur chez MUO pour le bricolage, Linux, la programmation et la sécurité. Avant de se passionner par l'écriture, il développait pour le web et iOS. Vous pouvez également trouver ses écrits sur TechPP, où il couvre d'autres secteurs verticaux. Outre la technologie, il aime parler d'astronomie, de Formule 1 et de montres.

Plus de Yash Wate

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives!

Un pas de plus…!

Veuillez confirmer votre adresse e-mail dans l'e-mail que nous venons de vous envoyer.

.