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.
- Démon,
- Processus,
- 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 :
sshdgère les connexions SSH.cronplanifie des tâches.apache2sert 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 auxVous pouvez vérifier le PID d'un processus spécifique (par exemple nano) en utilisant la commande :
ps aux | grep nanoExemple :
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
systemctletjournalctl. - 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 1Exemple de sortie :
PID TTY TIME CMD
1 ? 00:00:00 systemdCela signifie que le système utilise Systemd.
Tableau récapitulatif
| Terme | Définition | Exemple |
|---|---|---|
| Démon | Un processus en arrière-plan qui fournit des services système. | sshd, cron, apache2. |
| Processus | Tout programme ou tâche en cours d'exécution sur le système. | bash, ls, sshd. |
| Système d'init | Le 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é | Processus | Dé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) |
| Exemple | firefox, nano, htop | sshd, cron, systemd-journald |
| Géré par | L'utilisateur ou le système | Systè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=runningExplication :
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
[...] 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
[ - ] apache2Ici, 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-statusExemple 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ème | Commande pour lister les démons en cours d'exécution |
|---|---|
| Systemd | systemctl list-units --type=service --state=running |
| SysVinit | service --status-all |
| OpenRC | rc-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 !
