Comment créer un service Systemd personnalisé sous Linux

Découvrez comment tirer parti de Systemd sur Linux pour créer des services personnalisés, gérer vos applications et optimiser les ressources système tout en améliorant la sécurité.
Systemd est un système d'initialisation puissant et polyvalent pour les distributions Linux. Il peut exécuter des programmes, gérer des ressources système et même contrôler l'état de votre ordinateur. Dans cet article, je vais démontrer comment utiliser Systemd pour contrôler vos applications en créant une unité de service personnalisée dans Ubuntu.
Qu'est-ce qu'une unité de service Systemd ?
Une unité de service est un fichier régulier qui contient des détails sur la façon d'exécuter une application spécifique. Il inclut les métadonnées générales du programme, comment l'exécuter et si Systemd peut y accéder lors d'une session normale.
Par défaut, chaque démon sur une machine basée sur Systemd dispose d'une forme de fichier de service. Par exemple, OpenSSH utilise l'unité ssh.service dans “/etc/systemd/system/” pour déterminer comment il s'exécutera sous Debian et Ubuntu.
À un niveau de base, un fichier d'unité de service est composé de trois parties : les catégories Unit, Service et Install. La section Unit
fournit les métadonnées et les dépendances de l'application. La section Service
définit où se trouve l'application et comment Systemd l'exécutera. Enfin, la section Install
décrit quand Systemd peut démarrer l'application.
Créer un service Systemd personnalisé au niveau système
L'une des utilisations les plus courantes d'un service personnalisé est l'automatisation de commandes nécessitant des privilèges root ou tirant parti des minuteries de Systemd. Par exemple, un service personnalisé aide à garantir qu'un serveur Minecraft démarre correctement après un redémarrage.
Pour créer un service personnalisé au niveau système sous Linux, commencez par créer le fichier d'unité Systemd dans le répertoire personnel de votre utilisateur :
nano ~/my-system-app.service
Collez le bloc de code suivant dans votre nouveau fichier d'unité. Ceci est la configuration valide la plus simple pour un service Systemd :
[Unit]
Description=Mon Premier Service
After=network.target
[Service]
Type=simple
ExecStart=/path/to/bin
Restart=always
[Install]
WantedBy=multi-user.target
Remplacez la variable “Description” par les détails de votre service au niveau utilisateur.
Remplacez la variable “ExecStart” par le chemin complet du programme que vous souhaitez exécuter.
Enregistrez votre nouveau fichier, puis copiez-le dans le répertoire des services de votre machine :
sudo cp ./my-system-app.service /etc/systemd/system/
Exécutez la commande suivante pour redémarrer le démon Systemd :
sudo systemctl daemon-reload
Testez votre nouveau service au niveau système en exécutant la commande suivante :
sudo systemctl start my-system-app.service
Enfin, confirmez que votre nouveau service fonctionne correctement en vérifiant son statut dans systemctl :
systemctl status my-system-app.service
Créer un service Systemd personnalisé au niveau utilisateur
Les unités de service ne se limitent pas aux applications au niveau système ou aux superutilisateurs. Avec l'aide de Systemd-user, il est possible de créer des services sans root. Cela permet aux utilisateurs non-root de gérer des applications locales tout en améliorant la sécurité de leur PC en limitant les programmes avec un accès root.
Pour créer votre service personnalisé au niveau utilisateur sous Linux, créez un nouveau fichier d'unité Systemd dans le répertoire personnel de votre utilisateur :
nano ~/my-user-app.service
Collez le bloc de code suivant dans votre nouveau fichier d'unité :
[Unit]
Description=Mon Premier Service Utilisateur
After=graphical-session.target
[Service]
Type=simple
ExecStart=/path/to/bin
[Install]
WantedBy=default.target
Remplacez la valeur de la variable “ExecStart” par le chemin du programme que vous souhaitez exécuter. Puisque c'est un service au niveau utilisateur, assurez-vous que votre compte utilisateur a le bon accès au binaire.
Enregistrez votre nouveau fichier de service au niveau utilisateur, puis créez le répertoire Systemd local pour votre utilisateur :
mkdir -p ~/.config/systemd/user/
Copiez votre nouveau fichier de service au niveau utilisateur dans le répertoire local de Systemd pour.
votre utilisateur :
cp ./my-user-app.service ~/.config/systemd/user/
Assurez-vous que Systemd vérifie votre répertoire utilisateur pour de nouveaux fichiers d'unité de service :
systemctl daemon-reload --user
Enfin, confirmez que votre nouveau service fonctionne correctement en vérifiant son statut dans systemctl :
systemctl --user status my-user-app.service
Bon à savoir : Systemd est plus qu'un simple système d'init. Découvrez comment son programme associé : Systemd-boot se compare au populaire GRUB.
Ajuster votre service Systemd personnalisé
Une des forces fondamentales de Systemd est qu'il vous permet de personnaliser entièrement la manière de lancer et de gérer des programmes.
Ajouter des variables d'environnement à un service personnalisé
Les variables d'environnement sont une partie importante de chaque système Linux. Elles fournissent des données supplémentaires à un programme sans modifier les fichiers de configuration. Avec Systemd, il est possible d'utiliser des variables d'environnement en les incorporant à vos unités de service.
Commencez par désactiver le service que vous souhaitez modifier :
systemctl --user disable --now my-user-app.service
Ouvrez votre fichier de service personnalisé à l'aide de votre éditeur de texte préféré :
sudo nano ~/.config/systemd/user/my-user-app.service
Faites défiler jusqu'à la section “[Service]”, puis ajoutez la ligne de code suivante juste en dessous de la variable “Type=” :
Environment=""
Ajoutez la variable d'environnement que vous souhaitez inclure à votre service personnalisé. Dans mon cas, je souhaite ajouter une variable EDITOR pour m'assurer que mon service voit mon instance de Vim.
Enregistrez votre fichier de service modifié, puis rechargez votre démon Systemd pour appliquer vos modifications.
Redémarrez votre nouveau service Systemd pour utiliser votre nouvelle variable d'environnement :
systemd --user start my-user-app.service
Restreindre un service personnalisé à un utilisateur spécifique
À part les fichiers d'unités au niveau utilisateur, vous pouvez également ajuster un service au niveau système pour s'exécuter sous un utilisateur spécifique. C'est utile si vous souhaitez exécuter une application sous un compte utilisateur sans accès shell et sans privilèges d'administrateur.
Pour lier un service Systemd à un utilisateur, désactivez d'abord complètement votre unité personnalisée.
Assurez-vous que le compte utilisateur cible existe déjà sur votre machine.
Ouvrez votre fichier de service au niveau système à l'aide de votre éditeur de texte préféré :
sudo nano /etc/systemd/system/my-system-app.service
Faites défiler jusqu'à la section “[Service]”, puis ajoutez la variable “User=” suivie du nom de votre compte utilisateur.
Note : vous pouvez également spécifier le groupe pour votre service en ajoutant “Group=” sous la variable User.
Enregistrez les modifications apportées à votre fichier d'unité, puis redémarrez le service :
sudo systemctl start my-system-app.service
Confirmez que votre service fonctionne désormais sous votre utilisateur en exécutant la commande suivante :
ps -o user= -p $(systemctl show my-system-app.service -p MainPID | awk -F= '{print $2}')
Limiter la consommation de ressources d'une unité de service
En plus d'ajuster les variables d'environnement et les utilisateurs, Systemd peut limiter les ressources qu'une application peut consommer tout au long de sa durée de vie. Bien qu'il ne le fasse pas par défaut, il est possible de contrôler des parties essentielles telles que l'utilisation du CPU et le nombre total de processus.
Commencez par désactiver complètement le service que vous souhaitez ajuster.
Ouvrez le fichier d'unité de service en utilisant votre éditeur de texte préféré :
sudo nano /etc/systemd/system/my-system-app.service
Faites défiler jusqu'à la section “[Service]”, puis ajoutez le nom de la variable pour la ressource que vous souhaitez limiter. Par exemple, en ajoutant la variable “MemoryHigh=”, vous pouvez définir une limite de mémoire douce pour ce service.
Vous pouvez trouver une liste de variables valides en exécutant man systemd.resource-control
dans une session terminal.
Enregistrez votre fichier d'unité, puis rechargez votre service Systemd :
sudo systemctl enable --now my-system-app.service
Enfin, vous pouvez surveiller vos services en cours d'exécution en exécutant systemd-cgtop
.
Apprendre à créer des services Systemd personnalisés et à les modifier selon vos besoins est une étape essentielle pour comprendre cet outil hautement polyvalent. Explorez davantage Systemd et ce que son écosystème complet peut offrir en vérifiant comment Run0 se comporte par rapport à Sudo.
Questions et réponses importantes à connaître
Comment lancer un service sous Linux ?
Pour lancer un service sous Linux utilisant systemd, suivez ces étapes :
- Ouvrez un terminal sur votre système Linux.
- Vérifiez l'état du service (optionnel) : bash systemctl status nom_du_service
- Démarrez le service avec la commande suivante : bash sudo systemctl start nom_du_service
-
- - Note : Remplacez
nom_du_service
- par le nom réel du service que vous souhaitez démarrer.
-
- Vérifiez que le service fonctionne correctement : bash systemctl is-active nom_du_service
- Pour le démarrer automatiquement au démarrage du système, utilisez : bash sudo systemctl enable nom_du_service Assurez-vous d'avoir les droits nécessaires (utilisez
sudo
si vous n'êtes pas root) pour manipuler les services système.
Comment créer un fichier sous Linux ?
Pour créer un fichier sous Linux, voici les méthodes les plus courantes :
- Utiliser la commande
touch
:- - Ouvrez le terminal.
- Tapez la commande :
touch nom_du_fichier
- Cette commande crée un fichier vide s'il n'existe pas déjà, sinon elle met simplement à jour l'heure d'accès du fichier.
- Créer un fichier avec des éditeurs de texte :
- nano :
- Tapez
nano nom_du_fichier
et éditez le contenu. Enregistrez avecCtrl + O
, puis quittez avecCtrl + X
. - vim :
- Tapez
vim nom_du_fichier
. Appuyez suri
pour entrer en mode insertion, écrivez votre texte, puis enregistrez avec:wq
. - Redirection de la commande
echo
: - Vous pouvez également créer un fichier avec la commande :
echo 'Texte' > nom_du_fichier
- Cela crée un fichier contenant 'Texte'. Si le fichier existe, son contenu sera remplacé. Ces méthodes vous permettent de créer facilement des fichiers sous Linux selon vos besoins.
Qu'est-ce que systemd dans Linux ?
Systemd est un système d'initialisation et de gestion de services utilisé par la plupart des distributions Linux modernes. Voici quelques points clés pour mieux comprendre son fonctionnement :
-
- -
Système d'init
- : Remplace les systèmes d'initialisation traditionnels comme SysVinit et Upstart.
- Basé sur des événements : Réagit aux événements du système, permettant une gestion dynamique et flexible des services.
- Démarrage parallèle : Permet de lancer plusieurs processus simultanément, réduisant ainsi le temps de démarrage global.
- Gestion des dépendances : Offre une gestion fine des dépendances entre les services, garantissant qu'ils s'exécutent dans le bon ordre.
- Unités de service : Utilise des fichiers de configuration appelés 'unités' pour définir et gérer les services, les montages, les sockets, et plus encore. En résumé, systemd vise à améliorer la performance et l'efficacité de la gestion des services sur Linux.
Comment créer un nouvel utilisateur sous Linux ?
- Ouvrez un terminal.
- - Utilisez l'une des commandes suivantes pour créer un utilisateur :
sudo adduser nom_utilisateur
sudo useradd nom_utilisateur
- Suivez les instructions à l'écran pour définir le mot de passe et les informations supplémentaires (si nécessaire).
- Vous pouvez également utiliser des outils graphiques :
- Accédez aux paramètres système.
- Cliquez sur 'Ajouter un utilisateur'.
- Remplissez le formulaire avec le nom d'utilisateur, le nom complet et le mot de passe.
- Finalisez la création de l'utilisateur.
Maintenant que tu as fini de lire Comment créer un service Systemd personnalisé sous Linux, nous t'invitons à explorer davantage la catégorie Linux. Tu y trouveras d'autres articles intéressants qui élargiront tes connaissances et te tiendront informé. Ne cesse pas de lire et de découvrir plus!
Laisser un commentaire