Accueil Technologie
Comment créer un nouveau service systemd sous Linux

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. Voyons comment créer un nouveau service systemd personnalisé sous Linux.


Etape 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.

fichier de service du démon vmtools-2

Ce service particulier peut ne pas être 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és de service, ont la même structure de base avec quelques personnalisations si nécessaire.

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

1. L’unité

Le Unité comprend 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 Le paramètre « Description » fournit un certain contexte du service et de ce qu’il fait.

Le paramètre 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 Le paramètre de l’adresse du service de réseau a été modifié.

2. Service

Le Service contient deux paramètres obligatoires : ExecStart, Typeet quelques autres paramètres optionnels comme ExecReloadet plus encore.

ExecStart définit la commande à exécuter au démarrage du service alors que le paramètre 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 à l’aide de la commande systemctl.

Elle possède quelques paramètres. L’un des plus courants et des plus nécessaires est WantedBy. Les 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 paramètres que vous pouvez définir dans un fichier d’unité. Vous pouvez obtenir la liste complète des paramètres dans la 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 la base de données /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 du préfixe sudo commande :

 sudo touch /etc/systemd/system/<filename>.service  

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

configuration du service nmap personnalisé

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 le résultat dans un fichier toutes les trente secondes. Pour réaliser cette tâche, voici comment structurer le fichier d’unité de service :

 [Unit]
Description=Demonstration of custom nmap service.
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/nmap -sS -O -oN /home/<user>/results.txt localhost
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

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émarrer, RestartSecet Utilisateur.

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

  • Description : Texte lisible par l’homme décrivant les fonctionnalités du service.
  • Après=réseau.cible : Dictat à systemd que ce service est dépendant de network.target et ne devrait démarrer qu’après le réseau.cible a été démarré. Notez que le service Après n’est pas utilisé pour établir une relation de dépendance directe, il sert simplement de déclencheur.
  • Type=simple : Il existe plusieurs types de services. Cependant, le service de cette démonstration est un processus régulier et c’est pourquoi nous le déclarons ainsi. Vous trouverez toutes les valeurs possibles sur la page de documentation officielle mentionnée plus haut.
  • Restart=toujours : Cela signifie qu’à chaque fois que le service se termine, il doit toujours redémarrer.
  • RestartSec=30 : Ceci définit l’intervalle entre chaque démarrage du service à 30 secondes.
  • User=root : Ceci définit que le service s’exécutera en tant qu’utilisateur root. Dans ce cas, c’est une étape indispensable car Nmap ne pourra pas fonctionner sans les privilèges de l’utilisateur root.
  • ExecStart : Cette directive contient le chemin d’accès absolu au programme à exécuter ainsi que tous les drapeaux ou arguments nécessaires au bon fonctionnement du programme.
  • WantedBy=multi-user.target : 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-utilisateurs 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

service nmap status-1

Maintenant que vous avez créé le fichier d’unité, les seules étapes restantes pour activer votre service sont l’activation et le lancement. 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 :

 sudo systemctl enable <filename>.service
sudo systemctl start <filename>.service
sudo systemctl status <filename>.service

Maintenant, votre service personnalisé devrait ê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, c’est un moyen assez facile de mettre en place un processus autonome et sans surveillance pour effectuer des tâches répétitives à votre place et augmenter votre productivité.

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 dont le lien figure dans la note.

Si la mise en place et la maintenance d’un service vous semble être une tâche trop lourde, pensez à consulter une autre façon d’automatiser les tâches répétitives sous Linux.

Leave your vote

0 0 votes
Évaluation de l'article
S’abonner
Notification pour
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires

Log In

Forgot password?

Don't have an account? Register

Forgot password?

Enter your account data and we will send you a link to reset your password.

Your password reset link appears to be invalid or expired.

Log in

Privacy Policy

Add to Collection

No Collections

Here you'll find all collections you've created before.

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x