Guide étape par étape pour créer un service Systemd personnalisé sous Linux

Guide étape par étape pour créer un service Systemd personnalisé sous Linux

Maîtriser les services Systemd personnalisés sous Linux : un guide complet

Systemd est un système d’initialisation robuste et dynamique utilisé dans diverses distributions Linux. Il facilite l’exécution des programmes, la gestion des ressources et le contrôle global du système. Ce guide vous permettra d’exploiter tout le potentiel de Systemd en créant des unités de service personnalisées dans Ubuntu.

Comprendre les unités de service Systemd

À la base, une unité de service est un fichier standardisé qui décrit la configuration nécessaire à l’exécution d’une application spécifique. Il encapsule des métadonnées sur le programme, des directives d’exécution et des détails sur la structure d’accès de Systemd pendant les sessions.

Chaque démon dans un environnement pris en charge par Systemd est régi par un fichier de service. Par exemple, OpenSSH fonctionne à l’aide de l’ ssh.serviceunité située dans /etc/systemd/system/pour dicter son fonctionnement dans les systèmes Debian et Ubuntu.

Un terminal montrant l'unité de service pour OpenSSH.

En général, un fichier d’unité de service est structuré en trois sections principales : Unit, Serviceet Install. La Unitsection indique les métadonnées et les dépendances de l’application, tandis que la Servicesection spécifie son emplacement et sa méthodologie d’exécution. En conclusion, la Installsection clarifie quand l’application peut être lancée par Systemd.

Création d’un service personnalisé au niveau du système

Les services personnalisés sont très utiles pour automatiser les tâches nécessitant des privilèges élevés ou utilisant les temporisateurs Systemd. Un exemple typique consiste à s’assurer que votre serveur Minecraft démarre de manière fiable après un redémarrage du système.

Étapes pour créer votre service personnalisé au niveau du système

  • Créez le fichier d’unité Systemd : commencez par créer un nouveau fichier d’unité dans votre répertoire personnel.
  • nano ~/my-system-app.service
  • Insérer la configuration : ajoutez le modèle suivant dans le nouveau fichier d’unité. Cela sert de configuration de base valide :
  • [Unit] Description=My First Service After=network.target [Service] Type=simple ExecStart=/path/to/bin Restart=always [Install] WantedBy=multi-user.target
  • Personnalisez votre service : ajustez les champs Descriptionet ExecStartavec les détails pertinents à votre service.
  • Déplacer le fichier : Enregistrez-le et transférez-le dans le répertoire de service :
  • sudo cp ~/my-system-app.service /etc/systemd/system/
  • Recharger le démon Systemd : exécutez la commande pour recharger les services :
  • sudo systemctl daemon-reload
  • Démarrez votre service : lancez votre service personnalisé au niveau du système :
  • sudo systemctl start my-system-app.service
  • Vérifier la fonctionnalité : Confirmez que votre service est opérationnel :
  • systemctl status my-system-app.service
Un terminal montrant le service personnalisé fonctionnant correctement.

Mise en place d’un service personnalisé au niveau de l’utilisateur

Systemd prend en charge la création de services sans racine à l’aide de Systemd-user, permettant aux utilisateurs non root de gérer efficacement les applications personnelles tout en améliorant la sécurité en minimisant l’accès root.

Comment créer votre service personnalisé au niveau utilisateur :

  • Configurer le fichier d’unité : créez un nouveau fichier d’unité dans le répertoire personnel.
  • nano ~/my-user-app.service
  • Insérer la configuration de base : utilisez le framework suivant dans le fichier d’unité :
  • [Unit] Description=My First User Service After=graphical-session.target [Service] Type=simple ExecStart=/path/to/bin [Install] WantedBy=default.target
  • Ajuster ExecStart : assurez-vous que le chemin spécifié dans ExecStartest accessible à votre compte utilisateur.
  • Créer le répertoire Systemd local de l’utilisateur :
  • mkdir -p ~/.config/systemd/user/
  • Copiez le fichier d’unité : transférez votre unité de service personnalisée dans le répertoire local :
  • cp ~/my-user-app.service ~/.config/systemd/user/
  • Recharger Systemd pour l’utilisateur : vérifier que Systemd vérifie si le répertoire de l’utilisateur contient des modifications :
  • systemctl daemon-reload --user
  • Vérifier l’état du service : assurez-vous que votre service utilisateur est correctement reconnu :
  • systemctl --user status my-user-app.service
Un terminal affichant le service utilisateur personnalisé reconnu dans systemctl.

Optimisation de votre service Systemd personnalisé

La flexibilité de Systemd permet aux utilisateurs d’ajuster finement les paramètres et les comportements du service.

Intégration des variables d’environnement

Les variables d’environnement enrichissent les programmes Linux avec un contexte supplémentaire sans modifier les fichiers de configuration, et Systemd prend en charge leur incorporation dans les unités de service.

  • Désactiver le service : Commencez par désactiver le service que vous souhaitez modifier :
  • systemctl --user disable --now my-user-app.service
  • Modifiez votre fichier de service : ouvrez le fichier d’unité dans votre éditeur de texte préféré :
  • sudo nano ~/.config/systemd/user/my-user-app.service
  • Modifier la section Service : Sous la [Service]section, inclure :
  • Environment="VARIABLE_NAME=VALUE"
  • Recharger le démon : enregistrez et rechargez le démon Systemd pour appliquer les modifications :
  • systemctl --user daemon-reload
  • Redémarrez le service : redémarrez en utilisant votre nouvelle variable d’environnement :
  • systemctl --user start my-user-app.service
Un terminal affichant un service avec une variable d'environnement modifiée.

Limiter l’utilisation des ressources

Systemd fournit des mécanismes de régulation de l’utilisation des ressources des services afin de garantir une utilisation équitable.

  • Désactiver le service cible : commencez par le désactiver complètement :
  • sudo systemctl disable my-system-app.service
  • Modifier le fichier d’unité : ouvrez le fichier de service avec :
  • sudo nano /etc/systemd/system/my-system-app.service
  • Ajouter des limites de ressources : Par exemple, pour limiter la mémoire :
  • MemoryHigh=SIZE
  • Recharger les modifications de l’unité : Rechargez vos nouveaux paramètres :
  • sudo systemctl daemon-reload
  • Surveiller l’utilisation des ressources : suivez les performances du service avec :
  • systemd-cgtop
Un terminal affichant la sortie de systemd-cgtop.

Conclusion

L’exploration de Systemd révèle un potentiel considérable pour la gestion des processus sous Linux. En créant des services personnalisés, de l’automatisation des tâches à la gestion de l’efficacité des ressources, vous pouvez améliorer considérablement l’interopérabilité et les performances de votre système. Plongez plus profondément dans Systemd et ses nombreuses fonctionnalités, et envisagez d’explorer les avantages comparatifs de Run0 par rapport à Sudo pour une compréhension plus nuancée.

Crédit image : Mikhail Fesenko via Unsplash. Toutes les modifications et captures d’écran par Ramces Red.

Questions fréquemment posées

1. Quels sont les avantages de l’utilisation des services Systemd par rapport aux systèmes d’initialisation traditionnels ?

Systemd offre un démarrage de service parallèle, une gestion des dépendances et une approche unifiée de la gestion des services, améliorant ainsi les performances et la fiabilité globales par rapport aux systèmes d’initialisation traditionnels.

2. Puis-je créer plusieurs services pour une seule application ?

Oui, vous pouvez créer plusieurs unités de service pour une seule application afin de gérer différents aspects, tels que le démarrage avec différentes configurations ou dans des conditions spécifiques.

3. Comment résoudre les problèmes avec mes services Systemd ?

Vous pouvez dépanner les services Systemd à l’aide de commandes telles que journalctl -u my-service-name.servicevérifier les journaux et systemctl status my-service-name.serviceexaminer l’état actuel et les messages d’erreur.

Source et images

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *