Comment lister les services en cours d'exécution sur Linux : Un guide complet pour tous les systèmes init
Introduction
Les services Linux sont des processus en arrière-plan qui s'exécutent en continu pour effectuer des tâches système, telles que la gestion des réseaux, la gestion des connexions utilisateur ou l'exécution de serveurs web. Ces services peuvent être gérés par divers outils, selon la distribution Linux et le système init utilisé.
Savoir comment lister les services en cours d'exécution est essentiel pour les administrateurs système et les développeurs. Cela aide à :
- Dépanner des problèmes – Vérifier si un service critique est en cours d'exécution ou a échoué.
- Surveiller les performances – Identifier les services gourmands en ressources.
- Auditer la sécurité – S'assurer que seuls les services nécessaires sont actifs.
Utilisation de systemctl (Pour les systèmes basés sur Systemd)
La plupart des distributions Linux modernes, y compris Ubuntu (16.04+), CentOS (7+), Fedora et Debian (8+), utilisent systemd comme système init. La commande systemctl
est l'outil principal pour gérer et lister les services dans ces systèmes.
Vérification de l'état d'un service unique
Pour vérifier si un service spécifique est en cours d'exécution, utilisez :
systemctl status <nom-du-service>
Par exemple, pour vérifier si le serveur web nginx est en cours d'exécution :
systemctl status nginx
La sortie affichera si le service est actif (en cours d'exécution), inactif ou échoué, ainsi que des journaux pour le débogage.
Lister tous les services actifs
Pour lister tous les services en cours d'exécution, utilisez :
systemctl list-units --type=service --state=running
Cette commande affiche un tableau de tous les services actuellement en cours d'exécution avec leur état.
Lister tous les services (y compris ceux inactifs)
Si vous souhaitez voir tous les services, qu'ils soient en cours d'exécution ou non :
systemctl list-units --type=service
Cela inclura les services qui sont actifs, inactifs, échoués ou dans d'autres états.
Filtrer les services par état
Vous pouvez filtrer les services en fonction de leur état en utilisant :
systemctl list-units --type=service --state=failed
Cela listera uniquement les services échoués, ce qui peut être utile pour le dépannage.
Lister les services activés au démarrage
Pour vérifier quels services sont configurés pour démarrer automatiquement au démarrage :
systemctl list-unit-files --type=service | grep enabled
Exemple de sortie
Une sortie typique de systemctl list-units --type=service --state=running
pourrait ressembler à ceci :
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
networking.service loaded active running Raise network interfaces
ssh.service loaded active running OpenBSD Secure Shell server
systemd-logind.service loaded active running Login Service
Résumé
- Utilisez
systemctl status <service>
pour vérifier l'état d'un service unique. - Utilisez
systemctl list-units --type=service --state=running
pour lister les services actifs. - Utilisez
systemctl list-units --type=service
pour voir tous les services. - Utilisez
systemctl list-unit-files --type=service
pour voir les services activés au démarrage.
Utilisation de ps et grep pour les processus en cours d'exécution
Si vous souhaitez lister les services en cours d'exécution sans vous fier à systemctl
ou à d'autres outils de gestion de services, vous pouvez utiliser ps (process status) avec grep pour trouver des processus spécifiques.
Cette méthode est utile lorsque :
- Vous travaillez sur un système Linux minimal qui ne dispose pas des commandes
systemctl
ouservice
. - Vous souhaitez vérifier si un processus spécifique est en cours d'exécution, quel que soit le système init.
Lister tous les processus en cours d'exécution
La commande ps aux
affiche tous les processus en cours d'exécution sur le système :
ps aux
Cela produira une liste exhaustive de tous les processus en cours d'exécution, y compris leurs identifiants de processus (PIDs), l'utilisation du CPU, l'utilisation de la mémoire et les noms de commande.
Recherche d'un service spécifique
Pour vérifier si un service particulier est en cours d'exécution, utilisez ps aux | grep <nom-du-service>
:
ps aux | grep nginx
Cela affichera des lignes contenant "nginx", montrant s'il est en cours d'exécution. La sortie peut ressembler à ceci :
root 1034 0.0 0.3 49536 3412 ? Ss 12:34 0:00 nginx: master process /usr/sbin/nginx
www-data 1035 0.0 0.2 49536 2824 ? S 12:34 0:00 nginx: worker process
user 2045 0.0 0.0 14856 900 pts/0 S+ 12:35 0:00 grep --color=auto nginx
Ici :
- Les deux premières lignes indiquent que le service nginx est en cours d'exécution.
- La dernière ligne (
grep --color=auto nginx
) est la commandegrep
elle-même. Vous pouvez l'exclure en utilisant :
ps aux | grep nginx | grep -v grep
Affichage des processus dans un format hiérarchique
Pour une vue plus structurée, utilisez :
ps fax
Cela montre une structure arborescente des processus en cours d'exécution, facilitant l'identification des services en cours d'exécution et de leurs processus enfants.
Trouver des services par port
Si vous soupçonnez qu'un service s'exécute sur un port spécifique mais que vous n'êtes pas sûr du nom du service, utilisez :
netstat -tulnp | grep :80
ou, si netstat
n'est pas disponible :
ss -tulnp | grep :80
Cela listera le processus utilisant le port 80 (couramment utilisé par des serveurs web comme Nginx ou Apache).
Résumé
- Utilisez
ps aux
pour lister tous les processus en cours d'exécution. - Utilisez
ps aux | grep <nom-du-service>
pour vérifier un service spécifique. - Utilisez
ps fax
pour une vue arborescente des processus. - Utilisez
netstat -tulnp
ouss -tulnp
pour trouver des services s'exécutant sur des ports spécifiques.

FAQ (Questions Fréquemment Posées)
1. Comment vérifier si un service est en cours d'exécution sur Linux ?
Vous pouvez utiliser différentes méthodes selon votre distribution Linux :
- Pour les systèmes basés sur systemd :
systemctl status <nom-du-service>
- Pour les systèmes basés sur SysVinit :
service <nom-du-service> status
- En utilisant ps et grep :
ps aux | grep <nom-du-service>
2. Comment lister tous les services en cours d'exécution ?
- Pour les systèmes basés sur systemd :
systemctl list-units --type=service --state=running
- Pour les systèmes basés sur SysVinit :
service --status-all
- En utilisant la commande
ps
:ps aux
3. Comment puis-je vérifier si un service démarre au démarrage ?
- Pour systemd :
systemctl is-enabled <nom-du-service>
- Pour SysVinit (systèmes basés sur RHEL) :
chkconfig --list <nom-du-service>
4. Comment redémarrer un service ?
- Pour les systèmes basés sur systemd :
sudo systemctl restart <nom-du-service>
- Pour les systèmes basés sur SysVinit :
sudo service <nom-du-service> restart
5. Comment arrêter ou désactiver un service ?
- Pour arrêter un service temporairement :
sudo systemctl stop <nom-du-service>
- Pour empêcher un service de démarrer au démarrage :
sudo systemctl disable <nom-du-service>
6. Comment puis-je trouver quel service utilise un port spécifique ?
Vous pouvez utiliser netstat
ou ss
pour trouver des services s'exécutant sur un port spécifique :
netstat -tulnp | grep :80
ou
ss -tulnp | grep :80
7. Que faire si systemctl
n'est pas trouvé ?
Si vous obtenez une erreur comme command not found: systemctl
, cela signifie que votre système n'utilise peut-être pas systemd. Essayez d'utiliser :
service --status-all
ou
ps aux | grep <nom-du-service>
8. Comment lister les services échoués ?
Pour les systèmes basés sur systemd, exécutez :
systemctl list-units --type=service --state=failed
9. Comment activer la journalisation pour un service spécifique ?
Pour vérifier les journaux d'un service géré par systemd, utilisez :
journalctl -u <nom-du-service>
Pour voir les journaux en temps réel :
journalctl -u <nom-du-service> -f
10. Puis-je utiliser top
ou htop
pour voir les services en cours d'exécution ?
Oui ! top
et htop
fournissent une vue en direct des processus en cours d'exécution :
- Utilisez
top
:top
- Utilisez
htop
(interactif et convivial) :
(Installez avechtop
sudo apt install htop
ousudo yum install htop
si ce n'est pas disponible.)