Les fichiers de service ont .service extensions et contiennent les instructions requises par système pour gérer un service.
Le système init system gère l'initialisation du système à l'aide du Unité . Une unité est un objet qui exécute une tâche ou une action, telle que la gestion d'un service, ce qui implique de le contrôler et de le surveiller. Ces unités sont essentiellement des fichiers appelés fichiers de service qui incluent les dépendances et les commandes des unités. Ces fichiers sont cruciaux pour contrôler efficacement les processus en arrière-plan et gérer les ressources.
Dans le guide, j'explorerai le fichier du service systemd, sa structure et les principales directives qui contrôlent le service.
Lorsque vous travaillez avec systemd, les termes fichier de service système et fichier d'unité systemd sont souvent utilisés de manière interchangeable car techniquement, ils font référence à la même chose.
Qu'est-ce que le fichier de service Systemd
Sous Linux, systemd gère les services à l'aide des fichiers de service qui contiennent les instructions de configuration afin que systemd puisse comprendre et exécuter.
Pour lister les unités, utilisez systemctl avec le –liste-unités commande.
systèmectl --liste-unités
Pour lire le fichier de service de n'importe quel service, utilisez le chat commande avec le chemin du fichier.
chat [ / chemin du fichier de service ]Par exemple, pour voir le fichier de service de ssh.service utilisez la commande donnée.
chat / lib / système / système / ssh.service
Anatomie du fichier de service Systemd
Généralement, les fichiers d'unités de service systemd contiennent trois sections.
- Unité
- Service
- Installer
Un fichier d'unité spécifique à un service aura une section spécifique appelée Service section.
Notez que le service n’est qu’un type d’unité. Une unité peut avoir différents types tels que socket, périphérique, montage, montage automatique, échange, cible, minuterie, tranche et portée. Ces sections sont placées entre les sections Unité et Installation. L'extension du fichier sera également remplacée par le type d'unité respectif, par exemple, un type d'unité socket aura un .prise extension de fichier.
Note: Dans ce guide, je me concentrerai sur le type d'unité de service en raison de sa large utilisation par les administrateurs et les développeurs.
Ces sections sont placées entre crochets ([]). Chaque section contient un jeu d'instructions pertinent. Une structure générale d’un fichier de service est donnée ci-dessous.
[ Unité ]Directive1 =Instruction 1
Directive2 =Instruction 2
[ Service ]
Directive1 =Instruction 1
Directive2 =Instruction 2
[ Installer ]
Directive1 =Instruction 1
Directive2 =Instruction 2
L'ordre des sections peut être modifié ; cependant, l'ordre mentionné ci-dessus est généralement suivi.
Section [Unité]
La section unité contient la description de l’unité et des dépendances de l’unité. Cette section, par convention, est placée en haut du fichier de service. Les directives couramment utilisées sont répertoriées ci-dessous :
Directif | Description |
Description | Cette directive est utilisée pour mentionner le nom du service. La longueur de la description ne doit pas dépasser 80 caractères. |
Documentation | Cette directive contient la page de manuel ou l'URL du service. |
A besoin | Cette directive est utilisée pour mentionner la dépendance au service actuel. Si l'activation de ce service de dépendance n'est pas effectuée, le service en cours ne sera pas initié. |
Veut | Cette directive est utilisée pour mentionner la dépendance au service actuel. Cependant, il n'est pas nécessaire d'activer ce service de dépendance pour exécuter le service actuel. |
Avant | Une fois l'unité actuelle activée, le service mentionné dans cette directive sera démarré. |
Après | Avant que l'unité actuelle ne soit activée, le service mentionné dans cette directive sera démarré. |
Lier à | Cette directive lie le service actuel au service mentionné. Si le service lié redémarre, les services actuels redémarreront également. |
Outre ces directives, il existe deux autres directives ; Condition et Affirmer. De nombreux services nécessitent des conditions système spécifiques pour fonctionner correctement, et ces directives sont utilisées pour mentionner les conditions.
Section [Installer]
Cette section n'est pas obligatoire et n'est nécessaire que lorsqu'un service nécessite une activation ou une désactivation au démarrage. De plus, il convient également de mentionner le service d'alias. Les directives couramment utilisées pour la section Installer sont répertoriées ci-dessous :
Directif | Description |
RecherchéPar | Cette directive définit le niveau d'exécution * cible du service. Si un objectif est fixé à multi-utilisateur.cible alors le service sera activé à ce niveau d'exécution. |
Requis par | Cette directive ressemble à WantedBy, cependant, même sans la dépendance mentionnée dans la directive, le service sera activé. |
Alias | Cette directive est utilisée pour activer le service avec un autre nom. Un lien symbolique est créé avec ce nom lorsque le service est activé. |
Surtout, le multi-utilisateur.cible est utilisé en tant que RecherchéPar paramètre. Mais qu’est-ce que multi-user.target ?
Le multi-user.target représente l’état du système prêt à accepter des sessions multi-utilisateurs non graphiques. C'est l'état avant de lancer l'interface graphique.
Il existe différents niveaux d'exécution du système, découvrons la fonction de ces niveaux d'exécution.
Dans systemd, les services sont regroupés en fonction de niveaux d'exécution, appelés cibles . Chaque niveau d'exécution possède un fichier avec .cible prolongation dans le /etc/systemd/système annuaire. Un service s'exécutera en fonction de l'état du niveau d'exécution.
Niveau d'exécution | Cibles | État | Des dossiers |
0 | éteindre | Arrêter et éteindre | poweroff.cible |
1 | sauvetage | Démarre la coquille de sauvetage | sauvetage.cible |
2,3,4 | multi-utilisateur | Démarre le shell multi-utilisateur non-GUI | multi-utilisateur.cible |
5 | graphique | Établit un shell GUI multi-utilisateurs | graphique.cible |
6 | redémarrer | Arrêter et redémarrer | redémarrer.cible |
Rubrique [Services]
Cette section comprend les paramètres de configuration du service. La configuration principale de cette section consiste à définir le type et les commandes à exécuter au démarrage du service. Taper et ExécuterDébut sont les principales directives utilisées pour mettre en place un service.
Différents types de services sont répertoriés dans le tableau suivant.
type de service | Description |
simple | Il s'agit du type par défaut lorsque le type ou le nom du bus n'est pas mentionné et que seul ExecStart est mentionné. Le systemd exécute d'abord le processus principal, puis les unités de suivi. |
bifurquer | Ce type est utilisé pour maintenir le service en marche même si le service parent est fermé. Il lance un processus enfant après la fermeture du processus parent. |
un tir | Le systemd exécute d'abord le processus principal et lorsque le processus principal se termine, les unités de suivi démarrent. |
bus | Le service avec dbus est utilisé pour communiquer avec un autre processus sur le bus. Si le nom du bus est mentionné, le processus sera activé une fois le nom du bus acquis. |
notifier | Le service vous avertira lors du démarrage du processus. Le systemd procédera aux unités de suivi après l'émission de la notification. |
inactif | Il maintient le service jusqu'à ce que toutes les tâches actives soient distribuées ; principalement utile pour améliorer la sortie de la console. |
Les directives couramment utilisées dans la section Service sont mentionnées ci-dessous :
Directif | Description |
ExécuterDébut | Il conserve le chemin complet de la commande à exécuter pour démarrer le processus. |
ExecStartPre | Il conserve les commandes qui doivent être exécutées avant le début du processus principal. |
ExecStartPost | Il conserve les commandes qui doivent être exécutées après le début du processus principal. |
ExecReload | Il conserve la commande pour recharger la configuration du service. |
Redémarrage | Pour redémarrer automatiquement le service dans des circonstances telles qu'en cas d'échec, de réussite, d'anomalie, d'abandon et de surveillance. |
RedémarrerSec | Pour conserver le nombre de secondes après lequel le service redémarrera automatiquement. |
Le ExécuterDébut est l'une des directives cruciales utilisées dans la section Service. Il contient le chemin complet de l'exécutable que le service exécutera lors de son appel.
Conclusion
Un fichier de service systemd est un fichier de configuration structuré avec des directives et des commandes afin qu'elles puissent être gérées par systemd. Ces fichiers contiennent des instructions indiquant comment un service est géré par systemd. Dans ce guide, j'ai expliqué comment accéder à un fichier de service systemd, à ses sections et aux directives qui gèrent les services. Pour en savoir plus sur les instructions du fichier de service, veuillez lire le guide de documentation officiel trouvé ici .