Comment créer un nouveau service systemd sous Linux

systemd est le gestionnaire de services d’un grand nombre de distributions Linux bien connues. Un service est une unité d’un programme qui s’exécute généralement en arrière-plan. Les services, par nature, démarrent automatiquement dès que le système démarre et peuvent fonctionner sans surveillance.

Si vous avez besoin de créer une tâche ou un programme à démarrage automatique qui s’exécute chaque fois que vous démarrez ou redémarrez votre système, vous pouvez envisager de créer un nouveau service. Voici comment créer un nouveau service systemd personnalisé sous Linux.

Étape 1 : Création du fichier de service

Quelques étapes sont nécessaires pour créer un nouveau fichier de service systemd. La première d’entre elles est la création du fichier d’unité pour le service. Avant de créer un fichier de service, vous devez comprendre sa structure.

Étudions le fichier de service en extrayant un fichier de service réel et fonctionnel de votre système Linux. Ci-dessous, vous pouvez voir le fichier de service pour le service démon vmtools.

Ce service particulier n’est peut-être pas présent sur votre système, à moins que vous n’exécutiez également Linux sur VMware avec les outils VMware installés. Le service en question n’est pas important car tous les services, ou plutôt les fichiers d’unité de service, ont la même structure de base avec quelques personnalisations selon les besoins.

Tous les fichiers de service systemd doivent comporter trois sections : , , et et quelques paramètres sous chaque section. Voici ce que chaque section contient et pourquoi elle est importante :

1. L’unité

L’unité Unité contient des métadonnées importantes telles que la description et les dépendances du service. Elle comporte trois paramètres : Description, Avant et Après. Comme le suggère le même texte, le Description fournit un certain contexte du service et de ce qu’il fait.

Voir aussi :  Comment installer les DEB dans Ubuntu 23.10

Le paramètre Description fournit un certain contexte pour le service et ce qu’il fait. Avant et Après définissent les conditions à remplir pour que le service s’exécute. Par exemple, si vous démarrez un service de serveur web, vous souhaitez qu’il ne démarre qu’une fois que le service réseau est en ligne. Vous devez donc définir la valeur du paramètre Après au service réseau.

2. Service

Le Service contient deux paramètres obligatoires : ExecStart, Type et quelques autres paramètres optionnels comme ExecReload et d’autres encore.

ExecStart définit la commande à exécuter au démarrage du service, tandis que la commande Type détermine le type de processus à lancer.

3. Installer

Cette section et ses données sont appelées chaque fois que vous activez ou désactivez le service avec la commande systemctl.

Elle comporte plusieurs paramètres. L’un des plus courants et des plus nécessaires est WantedBy. Le WantedBy définit les unités cibles qui doivent démarrer lorsque le service est activé. La valeur par défaut est multi-user.target.

Les paramètres mentionnés ici ne sont pas les seuls que vous pouvez définir dans un fichier d’unité. Vous pouvez obtenir la liste complète des paramètres à partir de la page documentation officielle de systemd.exec ou en tapant man systemd.exec dans un terminal.

Un fichier d’unité de service systemd se termine toujours par un « . service « et doit être stocké dans le répertoire /etc/systemd/system/ dans le répertoire /etc/systemd/system/ Créez le fichier de service à l’aide de la commande touch avec des privilèges élevés en le faisant précéder de l’extension sudo :

Maintenant que vous avez créé le fichier de service, nous allons le remplir avec la syntaxe nécessaire pour que le service soit valide et fonctionne.

Étape 2 : Configuration du fichier de service

Voir aussi :  Comment jouer de la musique à partir du terminal Linux avec cmus.

Pour la démonstration, vous allez créer un exemple de service qui exécute Nmap pour scanner les ports de votre machine et stocker la sortie dans un fichier toutes les trente secondes. Pour réaliser cette tâche, voici comment structurer le fichier d’unité de service :

Bien que les paramètres mentionnés ici aient été expliqués précédemment, voyons comment ils affectent notre service nouvellement créé et explorons également les nouveaux paramètres introduits dans cette unité : Redémarrage, RestartSec et Utilisateur.

Voici ce que signifient les paramètres de chaque section :

  • Description : Texte lisible par l’homme à décrire Ce paramètre dans un fichier de service spécifie quelle cible doit inclure ou « vouloir » le service. Lorsqu’un service est inclus dans une cible, cela signifie qu’il doit démarrer lorsque le système atteint cette cible au cours du processus de démarrage. Dans ce cas, le service doit démarrer lorsque le système entre en mode multi-utilisateur. Le mode multi-utilisateur est un état dans lequel le système est entièrement démarré et permet à plusieurs utilisateurs de se connecter et d’utiliser le système.

Étape 3 : Activation et démarrage du service

Maintenant que vous avez créé le fichier d’unité, les seules étapes restantes pour activer votre service sont l’activation et le démarrage. Vous pouvez activer et démarrer votre service à l’aide de la commande systemctl.

Voici comment utiliser systemctl pour activer, démarrer et vérifier l’état de votre service :

Votre service personnalisé devrait maintenant être opérationnel ! Dans ce cas, vous devriez voir un scan Nmap s’exécuter toutes les trente secondes et la sortie être stockée dans le fichier results.txt dans le répertoire personnel.

Configurer un service systemd sous Linux, c’est facile !

Bien que la mise en place d’un service personnalisé à partir de zéro puisse sembler intimidante au début, il s’agit d’un moyen assez facile de mettre en place un processus auto-exécutable et sans surveillance pour effectuer des tâches répétitives à votre place et augmenter votre productivité.

Voir aussi :  Comment réparer l'erreur "sudo Password Not Working" sous Linux

Dans le service de démonstration, nous avons à peine effleuré la surface de la configuration et de la mise en place d’un service. Pour tout savoir sur la façon dont vous pouvez personnaliser votre service, nous vous recommandons de consulter la documentation officielle.

Comment créer un service dans systemd ?

Création d’un fichier de service Systemd personnalisé sous Linux

  • Description – permet de spécifier une description pour le service.
  • After – définit une relation avec une deuxième unité, le réseau.
  • Utilisateur – permet de spécifier l’utilisateur avec les autorisations duquel le service sera exécuté.

Où puis-je créer des services systemd ?

Création d’un service systemd systemd init utilise divers fichiers unitaires pour contrôler les différentes opérations du système et des services. Un fichier d’unité contient des informations sur un processus géré par systemd. L’emplacement par défaut des fichiers unitaires est le répertoire /lib/systemd/system.

Comment créer un service Linux personnalisé ?

Créer un service personnalisé Linux :

  • Comme démo, utilisez le fichier script Bash `custom_service.sh` suivant :
  • Déplacez le script dans /usr/bin/ et rendez-le exécutable :
  • Créez un fichier Unit pour définir un service systemd :
  • Déplacez le fichier Unit dans /etc/systemd/system et donnez-lui des permissions :
  • Démarrez le service :
  • Vérifiez l’état du service :

Comment démarrer un service système sous Linux ?

Démarrage d’un service Linux

  • Ouvrez une fenêtre de terminal.
  • Exécutez la commande sudo systemctl start httpd. Dans cette commande : sudo indique à Linux que vous exécutez la commande en tant qu’utilisateur root. systemctl gère les services systemd.
  • Une fois la commande exécutée, vous obtiendrez le message suivant :
Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

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