Recherche de site Web

Comprendre les services et les démons dans Linux


Lorsque vous débutez avec Linux, vous pouvez souvent rencontrer les termes « services » et « daemons », qui désignent des processus en arrière-plan jouant un rôle clé pour maintenir le système en fonctionnement de manière fluide, souvent sans nécessiter d'intervention directe de l'utilisateur.

Comprendre comment ces composants fonctionnent peut vous aider à mieux gérer votre système et à résoudre les problèmes courants plus efficacement. Dans cette vue d'ensemble adaptée aux débutants, nous expliquerons ce que sont les services et les daemons, comment ils fonctionnent dans Linux, et quels outils sont disponibles pour vous aider à les contrôler efficacement.

Quels sont les services et les démons dans Linux ?

Décomposons ce qu'ils sont, en quoi ils diffèrent, et pourquoi ils sont importants.

Qu'est-ce qu'un daemon ?

Un démon (prononcé DEE-muhn) est un processus en arrière-plan qui démarre automatiquement ou s'exécute silencieusement en arrière-plan sans aucune interaction de l'utilisateur. Sa tâche est d'attendre des événements système spécifiques ou de gérer des tâches routinières de manière discrète et constante.

Pensez à un daemon comme à un assistant personnel toujours actif qui n'a jamais besoin de supervision.

Voici quelques exemples courants :

  • sshd – Gère les connexions SSH à distance sur le réseau.
  • httpd – Exécute votre serveur web, fournissant des sites Web et des API.
  • crond – Gère les tâches planifiées (comme les sauvegardes automatisées ou les scripts de maintenance).

Par convention, la plupart des démons dans Linux se terminent par la lettre d, qui signifie simplement « démon ».

Qu'est-ce qu'un service ?

Maintenant, tandis qu'un démon se réfère spécifiquement à un processus en arrière-plan, le terme « service » est un peu plus large sous Linux.

Un service est un processus en arrière-plan géré qui peut s'exécuter en continu comme un daemon, ou il peut être déclenché à la demande. Les services fournissent des fonctionnalités telles que la mise en réseau, l'impression, la journalisation, les pare-feux, et plus encore.

Les services peuvent :

  • Démarrer automatiquement au démarrage.
  • Il peut être démarré ou arrêté manuellement par l'utilisateur.
  • Exécutez de manière persistante ou seulement lorsque nécessaire.

Voici donc le point clé :

Tous les démons sont des services, mais tous les services ne sont pas des démons.

Par exemple :

  • Un démon comme sshd fonctionne en permanence, à l'écoute des connexions.
  • Mais un service comme un scanner Bluetooth peut ne fonctionner que lorsqu'un appareil Bluetooth est détecté, ce qui est basé sur des événements, et non toujours actif.

Certains services sont transitoires ; ils démarrent, accomplissent une tâche, et s'arrêtent :

  • Comme systemd-resolved, qui gère les requêtes DNS à la volée.
  • Ou atd, qui exécute des tâches programmées une seule fois puis se termine.

Cette flexibilité fait partie de ce qui rend Linux un système si puissant ; vous ne lancez que ce dont vous avez besoin, quand vous en avez besoin.

Comment Linux gère les services : systemd et plus

En ce qui concerne la gestion des services sur les systèmes Linux modernes, systemd est le joueur dominant, qui agit comme le système init, qui est le premier processus à démarrer lorsque le système s'amorce – toujours attribué au PID 1.

Une fois qu'il est en cours d'exécution, systemd prend en charge la tâche de démarrer et de gérer tous les autres services et démons sur le système. La plupart des distributions Linux populaires comme Ubuntu, Fedora, Debian, CentOS et Arch Linux ont adopté systemd comme système init par défaut en raison de sa rapidité, de son efficacité et de son large éventail de fonctionnalités.

Vous interagissez avec systemd principalement via la commande systemctl, qui vous donne un contrôle total sur les services tels que le démarrage, l'arrêt, l'activation, la désactivation, la vérification des statuts, et plus encore.

Bien que systemd soit la norme actuelle, il convient de noter qu'il existe d'autres systèmes d'initialisation que vous pourriez rencontrer, en particulier sur des distributions plus anciennes ou spécialisées.

  • SysVinit est le système init traditionnel utilisé dans les versions plus anciennes de Linux, avec une approche plus simple qui consistait à exécuter des scripts dans /etc/init.d.
  • Upstart, autrefois utilisé par Ubuntu, visait à améliorer SysVinit avec des capacités pilotées par les événements mais a été en grande partie remplacé.
  • Un autre encore en usage est OpenRC, un système d'init léger et simple utilisé dans des distributions comme Alpine Linux et Gentoo.

Cela dit, ce guide se concentrera entièrement sur systemd, puisque c’est ce que vous êtes le plus susceptible de rencontrer dans les environnements Linux réels aujourd’hui.

Gérer les services avec systemctl

La commande systemctl est votre outil de prédilection pour interagir avec les services sur un système Linux basé sur systemd. Voici les tâches les plus courantes que vous devrez connaître.

Pour vérifier l'état d'un service, utilisez la commande suivante, qui vous donnera un aperçu de l'état actuel du service - qu'il soit actif, inactif, en échec ou en cours d'exécution.

sudo systemctl status sshd

Pour démarrer un service manuellement, la syntaxe est simple :

sudo systemctl start sshd

Pour arrêter un service, il suffit d'exécuter :

sudo systemctl stop sshd

Pour redémarrer un service, exécutez simplement :

sudo systemctl restart sshd

Pour activer un service afin qu'il démarre au démarrage, utilisez :

sudo systemctl enable sshd

D'un autre côté, pour désactiver le démarrage automatique d'un service, exécutez :

sudo systemctl disable sshd

Pour voir la liste de tous les services actuellement actifs, vous pouvez exécuter :

systemctl list-units --type=service

Si vous voulez une liste plus large, incluant les services qui sont installés mais pas en cours d'exécution, utilisez :

systemctl list-unit-files --type=service

Bonus : Utilisation de ps, top et htop pour voir les démons

Alors que des outils comme systemctl sont excellents pour gérer les services, il est parfois utile de regarder directement ce qui se passe au niveau des processus, ce qui peut être particulièrement utile lorsque vous voulez confirmer qu'un démon fonctionne, vérifier son utilisation des ressources ou résoudre des problèmes de performance.

Pour commencer, la commande ps vous donne un instantané de tous les processus en cours d'exécution.

ps aux

Cela affiche une liste détaillée de tous les processus actifs, y compris l’utilisateur sous lequel ils s’exécutent, la quantité de CPU et de mémoire qu’ils utilisent, et la commande qui les a démarrés.

Si vous recherchez un démon spécifique, vous pouvez combiner ps avec grep pour filtrer les résultats.

ps aux | grep sshd

Cette commande vous aide à savoir rapidement si le démon SSH fonctionne et quel est son état actuel.

ravi       17554  0.0  0.0   9144  2176 pts/0    S+   10:56   0:00 grep --color=auto sshd

Pour une vue en temps réel de ce qui se passe sur votre système, vous pouvez utiliser top, qui est inclus par défaut dans presque toutes les distributions Linux.

top

Si vous voulez quelque chose de plus convivial et coloré, essayez htop, qui est une alternative plus avancée à top. Contrairement à top, htop vous permet de faire défiler, filtrer et trier facilement les processus en utilisant les touches fléchées et les touches de fonction.

Vous devrez peut-être l'installer d'abord :

sudo apt install htop       # For Debian/Ubuntu
sudo yum install htop       # For CentOS/RHEL
sudo dnf install htop       # For Fedora

Une fois installé, lancez htop et vous aurez une manière beaucoup plus interactive d'inspecter ce qui tourne sous le capot.

Pensées finales

Les services et les démons sont au cœur de tout système Linux fonctionnel, car ils gèrent des tâches en arrière-plan cruciales telles que la gestion des connexions SSH, la planification des tâches, la diffusion de contenu web, la synchronisation de l'heure système et l'application des règles du pare-feu.

Ces composants fonctionnent silencieusement en arrière-plan pour maintenir le système en fonctionnement de manière efficace et fiable. Comprendre leur mode de fonctionnement et savoir les gérer efficacement est une partie clé pour devenir compétent en administration du système Linux.

Une fois que vous comprendrez comment gérer efficacement les services et les démons, vous vous sentirez beaucoup plus confiant pour naviguer et contrôler votre système Linux.