
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.service
unité située dans /etc/systemd/system/
pour dicter son fonctionnement dans les systèmes Debian et Ubuntu.

En général, un fichier d’unité de service est structuré en trois sections principales : Unit
, Service
et Install
. La Unit
section indique les métadonnées et les dépendances de l’application, tandis que la Service
section spécifie son emplacement et sa méthodologie d’exécution. En conclusion, la Install
section 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.
- Insérer la configuration : ajoutez le modèle suivant dans le nouveau fichier d’unité. Cela sert de configuration de base valide :
- Personnalisez votre service : ajustez les champs
Description
etExecStart
avec les détails pertinents à votre service. - Déplacer le fichier : Enregistrez-le et transférez-le dans le répertoire de service :
- Recharger le démon Systemd : exécutez la commande pour recharger les services :
- Démarrez votre service : lancez votre service personnalisé au niveau du système :
- Vérifier la fonctionnalité : Confirmez que votre service est opérationnel :
nano ~/my-system-app.service
[Unit] Description=My First Service After=network.target [Service] Type=simple ExecStart=/path/to/bin Restart=always [Install] WantedBy=multi-user.target
sudo cp ~/my-system-app.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start my-system-app.service
systemctl status my-system-app.service

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

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 :
- Modifiez votre fichier de service : ouvrez le fichier d’unité dans votre éditeur de texte préféré :
- Modifier la section Service : Sous la
[Service]
section, inclure : - Recharger le démon : enregistrez et rechargez le démon Systemd pour appliquer les modifications :
- Redémarrez le service : redémarrez en utilisant votre nouvelle variable d’environnement :
systemctl --user disable --now my-user-app.service
sudo nano ~/.config/systemd/user/my-user-app.service
Environment="VARIABLE_NAME=VALUE"
systemctl --user daemon-reload
systemctl --user start my-user-app.service

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 :
- Modifier le fichier d’unité : ouvrez le fichier de service avec :
- Ajouter des limites de ressources : Par exemple, pour limiter la mémoire :
- Recharger les modifications de l’unité : Rechargez vos nouveaux paramètres :
- Surveiller l’utilisation des ressources : suivez les performances du service avec :
sudo systemctl disable my-system-app.service
sudo nano /etc/systemd/system/my-system-app.service
MemoryHigh=SIZE
sudo systemctl daemon-reload
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.service
vérifier les journaux et systemctl status my-service-name.service
examiner l’état actuel et les messages d’erreur.
Laisser un commentaire ▼