Recherche de site Web

Comment lister tous les démons en cours d'exécution sous Linux


Un daemon est un processus en arrière-plan qui s'exécute sans interaction directe de l'utilisateur. Les systèmes Linux utilisent différents systèmes init (d'initialisation) pour gérer les daemons. Les plus courants sont Systemd, SysVinit et OpenRC. Dans ce tutoriel, nous expliquerons différentes façons de lister tous les daemons en cours d'exécution pour chaque système init sous Linux.

Comprendre les démons, les processus et les systèmes d'init

Avant d'entrer dans le sujet, permettez-moi d'expliquer brièvement les terminologies clés suivantes, car elles sont importantes pour comprendre le reste du tutoriel.

  1. Démon,
  2. Processus,
  3. Initialiser le système.

Si vous voulez gérer des services (comme démarrer ou arrêter un serveur web), vous devez comprendre les démons et le système init.

Si vous voulez surveiller ou dépanner votre système, vous devez comprendre les processus.

1. Qu'est-ce qu'un démon ?

Un démon est un processus en arrière-plan qui s'exécute en continu sur un système Linux, généralement sans interaction directe avec l'utilisateur.

Les démons fournissent des services essentiels au système ou à d'autres programmes. Par exemple :

  • sshd gère les connexions SSH.
  • cron planifie des tâches.
  • apache2 sert des pages web.

Les démons démarrent généralement lorsque le système s'allume et continuent de fonctionner jusqu'à ce que le système s'éteigne.

Exemple :

Si vous utilisez un serveur web, le daemon apache2 ou nginx s'exécute en arrière-plan pour gérer les requêtes web.

Fait amusant : Les noms de démon se terminent souvent par « d » (comme sshd, crond).

2. Qu'est-ce qu'un processus ?

Un processus est tout programme ou tâche qui est actuellement en cours d'exécution sur votre système.

Types de processus :

  • Processus au premier plan : Ceux-ci sont lancés par l'utilisateur et interagissent directement avec l'utilisateur (par exemple, un navigateur Web ou un éditeur de texte).
  • Processus en arrière-plan : Ceux-ci s'exécutent sans interaction de l'utilisateur (par exemple, un téléchargement de fichier ou une mise à jour du système).
  • Démons : Un type spécial de processus en arrière-plan qui fournit des services système.

Vous pouvez lister tous les processus en utilisant des commandes comme ps ou top.

ps aux

Vous pouvez vérifier le PID d'un processus spécifique (par exemple nano) en utilisant la commande :

ps aux | grep nano

Exemple :

Lorsque vous ouvrez un terminal, un processus bash démarre. Si vous exécutez une commande comme ls, un nouveau processus est créé pour exécuter cette commande.

Lecture connexe :

  • Comment Trouver l'ID du Processus Parent (PPID) dans Linux : Un Guide Étape par Étape
  • Comment afficher les informations des processus en utilisant Procs sur Linux
  • Comment savoir depuis combien de temps un processus s'exécute sous Linux
  • Comment changer la priorité d'un processus sous Linux
  • Comment Suspendre Un Processus Et Le Reprendre Plus Tard Sous Linux
  • Reptyr – Déplacer un processus en cours d'exécution d'un terminal à un autre sans le fermer

3. Qu'est-ce qu'un système d'initialisation ?

Le système init est le premier processus qui démarre lorsqu'un système Linux boot (avec l'identifiant de processus 1, ou PID 1). Il gère tous les autres processus et services sur le système.

Le système d'init est responsable de :

  • Démarrer et arrêter les services système (démons).
  • Gérer les dépendances entre les services.
  • Gestion de l'arrêt et du redémarrage du système.

Certains des systèmes d'initiation courants sont :

  • Systemd : Le système d'init le plus utilisé dans les distributions Linux modernes (par exemple, Ubuntu, Fedora, Debian). Les commandes pour gérer systemd sont systemctl et journalctl.
  • SysVinit : Un ancien système init utilisé dans les distributions Linux traditionnelles. Les commandes pour gérer SysVinit sont service, /etc/init.d/.
  • OpenRC : un système d'init moderne, flexible et léger, souvent utilisé dans Gentoo, Alpine Linux et Artix Linux.
  • Upstart : Un système d'init transitoire utilisé dans certaines anciennes versions d'Ubuntu. La commande pour le gérer est initctl. Il est désormais obsolète, car la plupart des distributions Ubuntu récentes sont passées à systemd.

Exemple :

Lorsque vous démarrez votre système, le système init lance les démons essentiels comme sshd (pour SSH) et cron (pour les tâches planifiées).

Le système init démarre et gère les démons (services en arrière-plan). Les démons ainsi que les programmes réguliers (comme un navigateur web) sont des types de processus. Vous pouvez lister tous les processus en utilisant des outils comme ps, mais vous avez besoin de commandes spécifiques à init (par exemple systemctl) pour gérer les démons.

Pour vérifier votre système d'init, exécutez :

ps --pid 1

Exemple de sortie :

PID TTY      TIME     CMD
1 ?        00:00:00 systemd

Cela signifie que le système utilise Systemd.

Tableau récapitulatif

TermeDéfinitionExemple
DémonUn processus en arrière-plan qui fournit des services système.sshd, cron, apache2.
ProcessusTout programme ou tâche en cours d'exécution sur le système.bash, ls, sshd.
Système d'initLe premier processus qui démarre au démarrage et gère tous les autres processus/services.systemd, SysVinit, OpenRC, Upstart.

Processus vs. Démons

Comme je l'ai déjà noté, un processus est tout programme ou tâche en cours d'exécution sur votre système (comme un éditeur de texte, un navigateur web ou un service en arrière-plan).

Un démon est un type spécial de processus qui s'exécute en arrière-plan sans interaction avec l'utilisateur, fournissant généralement des services système (comme la gestion des connexions réseau, la journalisation ou la planification des tâches).

Voici les principales différences entre les processus et les démons :

FonctionnalitéProcessusDémon
Fonctionne en arrière-plan ?Non (fonctionne généralement au premier plan)Oui
Attaché au terminal ?Oui (lorsqu'il est lancé par l'utilisateur)Non (détaché du terminal)
Exemplefirefox, nano, htopsshd, cron, systemd-journald
Géré parL'utilisateur ou le systèmeSystème d'initialisation (systemd, SysVinit, OpenRC)

D'accord. J'espère que vous avez maintenant une bonne compréhension des démons, des processus et des systèmes d'init. Maintenant, apprenons comment lister les démons pour chaque système d'init.

Tout d'abord, commençons par Systemd.

1. Lister tous les démons en cours d'exécution utilisant Systemd

Systemd utilise des services pour gérer les démons. Systemd est le système d'init par défaut dans de nombreuses distributions Linux modernes comme Arch Linux, Debian, Fedora, RHEL et Ubuntu.

Vous pouvez vérifier les services en cours d'exécution avec :

systemctl list-units --type=service --state=running

Explication :

  • systemctl → La commande principale pour gérer les services dans Systemd.
  • list-units → Liste les unités système actives.
  • --type=service → Filtre la sortie pour n'afficher que les services.
  • --state=running → Affiche uniquement les services actuellement en cours d'exécution.

Exemple de sortie :

  UNIT                      LOAD   ACTIVE SUB     DESCRIPTION                                            
  accounts-daemon.service   loaded active running Accounts Service
  avahi-daemon.service      loaded active running Avahi mDNS/DNS-SD Stack
  bluetooth.service         loaded active running Bluetooth service
  bolt.service              loaded active running Thunderbolt system service
  colord.service            loaded active running Manage, Install and Generate Color Profiles
  cron.service              loaded active running Regular background program processing daemon
  cups-browsed.service      loaded active running Make remote CUPS printers available locally
[...]  

Lister tous les démons en cours d'exécution en utilisant la commande systemd sous Linux

2. Afficher tous les démons en cours d'exécution utilisant SysVinit

SysVinit utilise des scripts d'init stockés dans /etc/init.d/. Il est utilisé dans les anciennes versions des distributions Linux telles que Debian 7, CentOS 6.

Pour lister les services en cours d'exécution :

service --status-all | grep "+"

Explication :

  • service --status-all → Liste tous les services et leurs statuts.
  • grep "+" → Filtre uniquement les services en cours d'exécution (services avec [ + ] dans la sortie).

Exemple de sortie :

 [ + ]  cron
 [ + ]  networking
 [ - ]  apache2

Ici, cron et networking sont en cours d'exécution, tandis que apache2 est arrêté.

3. Afficher les démons en cours d'exécution avec OpenRC

OpenRC gère les services en utilisant rc-status dans certaines distributions Linux telles qu'Alpine Linux et Gentoo.

Pour lister les démons actifs :

rc-status

Exemple de sortie :

Runlevel: default
 sshd                                                           [  started  ]
 crond                                                          [  started  ]

Fiche de référence pour lister les démons en cours d'exécution sous Linux

Init SystèmeCommande pour lister les démons en cours d'exécution
Systemdsystemctl list-units --type=service --state=running
SysVinitservice --status-all
OpenRCrc-status

Conclusion

Dans ce tutoriel, nous avons discuté des concepts de processus, démons et systèmes init, ainsi que des différences clés entre les processus et les démons pour clarifier leurs rôles dans un système Linux.

Nous avons également couvert comment lister les démons en cours d'exécution dans différents systèmes d'init, tels que Systemd, SysVinit et Upstart, avec des exemples pratiques.

Nous espérons que ce guide vous a été utile !