Comment lister les services en cours d'exécution sur Linux : Un guide complet pour tous les systèmes init

2025-02-12

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 ou service.
  • 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 commande grep 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 ou ss -tulnp pour trouver des services s'exécutant sur des ports spécifiques.
Comment lister les services en cours d'exécution sur Linux

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) :
    htop
    
    (Installez avec sudo apt install htop ou sudo yum install htop si ce n'est pas disponible.)