Les services sous Linux démarrent dès que votre système démarre ou redémarre. Voici comment vous pouvez créer un service systemd à démarrage automatique sur votre PC Linux.

systemd est le gestionnaire de services de nombreuses 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 devez 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. Apprenons à créer un nouveau service systemd personnalisé sous Linux.

Étape 1: Création du fichier de service

Il y a quelques étapes nécessaires pour créer un nouveau fichier de service systemd. Le premier d'entre eux est la création du fichier d'unité pour le service. Avant de créer un fichier de service, vous devez comprendre sa structure.

instagram viewer

É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 peut ne pas être présent sur votre système, sauf si vous exécutez é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 avoir trois sections: [Service], [Unité], et [Installer], et quelques paramètres sous chaque section. Voici ce que contient chaque section et pourquoi elles sont importantes :

1. Unité

Le Unité La section comprend des métadonnées importantes telles qu'une description et des dépendances du service. Il a trois paramètres: Description, Avant, et Après. Comme le suggère le même, le Description Le paramètre fournit un contexte du service et ce qu'il fait.

Le Avant et Après les paramètres 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 le service réseau en ligne. Donc, vous définiriez la valeur de Après paramètre au service réseau.

2. Service

Le Service contient deux paramètres obligatoires: ExecStart, Taper, et quelques autres paramètres optionnels comme ExecReload, et plus.

ExecStart définit la commande à exécuter au démarrage du service alors que Taper Le paramètre détermine le type de processus à générer.

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.

Il a quelques paramètres. L'un des plus courants et nécessaires est RecherchéPar. Le RecherchéPar Le paramètre définit les unités cibles qui doivent démarrer chaque fois que le service est activé. La valeur par défaut est multi-utilisateur.cible.

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 à partir du documentation officielle de systemd.exec ou en tapant homme systemd.exec dans une borne.

Un fichier d'unité de service systemd se termine toujours par un ".service" extension et doit être stocké dans le /etc/systemd/system/ annuaire. Créer le fichier de service en utilisant la commande tactile avec des privilèges élevés en le préfixant avec le sudo commande:

sudo touch /etc/systemd/system/.service 

Maintenant que vous avez créé le fichier de service, passons à le remplir avec la syntaxe nécessaire pour rendre le service valide et fonctionnel.

Étape 2: Configuration du fichier de service

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 :

[Unité]
Description=Démonstration du service nmap personnalisé.
Après=réseau.cible

[Service]
Genre=simple
Utilisateur=racine
ExecStart=/usr/bin/nmap -sS -O -oN /home//résultats.txt localhost
Redémarrer=toujours
RestartSec=30

[Installer]
WantedBy=multi-utilisateur.cible

Bien que les paramètres mentionnés ici aient été expliqués précédemment, examinons comment ils affectent notre service nouvellement créé et explorons également les nouveaux 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 pour décrire les fonctionnalités du service.
  • Après=réseau.cible : Dire à systemd que ce service dépend de réseau.cible et ne devrait commencer qu'après la réseau.cible service a été lancé. Noter que Après n'est pas utilisé pour établir une relation de dépendance directe, il agit simplement comme un déclencheur.
  • Taper=simple : Il existe plusieurs types de services. Cependant, le service dans cette démonstration est un processus régulier et c'est pourquoi nous le déclarons ainsi. Vous pouvez trouver toutes les différentes valeurs pour cela sur la page de documentation officielle liée plus tôt.
  • Redémarrer=toujours : Cela signifie que chaque fois que le service se termine, il doit toujours redémarrer.
  • RestartSec=30 : Cela définit l'intervalle entre chaque démarrage du service à 30 secondes.
  • Utilisateur=racine : Cela définit que le service s'exécutera en tant qu'utilisateur root. Dans ce cas, il s'agit d'une étape incontournable car Nmap ne pourra pas s'exécuter sans les privilèges root.
  • ExecStart : Cette directive contient le chemin absolu vers le programme à exécuter ainsi que tous les indicateurs ou arguments requis pour que le programme fonctionne correctement.
  • WantedBy=multi-utilisateur.cible : 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 que le service doit démarrer lorsque le système atteint cette cible pendant le processus de démarrage. Dans ce cas, le service doit démarrer lorsque le système passe 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: Activer et démarrer le service

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

activer sudo systemctl .service
sudo systemctl start .service
statut sudo systemctl .service

Maintenant, votre service personnalisé devrait être opérationnel! Dans ce cas, vous devriez voir une analyse Nmap s'exécuter toutes les trente secondes et la sortie être stockée dans le résultats.txt fichier dans le répertoire personnel.

Configurer un service systemd sur Linux est facile!

Bien que la configuration d'un service personnalisé à partir de zéro puisse sembler intimidante au début, c'est un moyen assez simple de configurer mettre en place un processus auto-exécutable et sans surveillance pour effectuer des tâches répétitives pour vous et booster votre productivité.

Dans le service de démonstration, nous avons à peine effleuré la façon dont vous pouvez configurer et configurer un service. Pour tout savoir sur la façon dont vous pouvez personnaliser votre service, il est recommandé de parcourir la documentation officielle liée dans la note.

Si la configuration et la maintenance d'un service vous semblent trop compliquées, envisagez de rechercher un autre moyen d'automatiser les tâches répétitives sous Linux.