Problème : Visualiser les services actifs sous Linux
La gestion des services sur un système Linux est une tâche pour les administrateurs et les utilisateurs. Systemctl, la commande principale pour contrôler systemd, offre un moyen de gérer et de surveiller ces services. Obtenir une vue d'ensemble de tous les services en cours d'exécution peut être difficile sans connaître les bonnes commandes et options à utiliser.
Lister tous les services en cours d'exécution avec Systemctl
Commande de base pour lister les services
Pour lister tous les services gérés par systemd, utilisez cette commande :
systemctl list-units --type=service
Cette commande affiche un tableau avec des informations sur chaque unité de service. La sortie comprend :
- UNIT : Le nom de l'unité de service
- LOAD : Si la définition de l'unité a été chargée
- ACTIVE : L'état d'activation de haut niveau de l'unité
- SUB : L'état d'activation de bas niveau de l'unité
- DESCRIPTION : Une brève description de l'objectif de l'unité
Pour afficher uniquement les services actifs, ajoutez l'option --state=active
:
systemctl list-units --type=service --state=active
Filtrer les services en cours d'exécution
Pour lister uniquement les services en cours d'exécution, utilisez :
systemctl list-units --type=service --state=running
Cette commande filtre les services inactifs ou défaillants, ne montrant que ceux en cours d'exécution sur votre système.
Pour une vue plus compacte, utilisez l'option --no-pager
:
systemctl list-units --type=service --state=running --no-pager
Cela empêche la pagination de la sortie, ce qui est utile lorsque vous voulez rediriger les résultats vers d'autres commandes ou fichiers.
Pour un aperçu rapide des services en cours d'exécution sans détails supplémentaires, utilisez :
systemctl list-units --type=service --state=running --plain --no-legend
Cette commande supprime les informations d'en-tête et de pied de page, fournissant une liste claire des services en cours d'exécution.
Pour compter le nombre de services en cours d'exécution, redirigez la sortie vers wc
:
systemctl list-units --type=service --state=running --plain --no-legend | wc -l
Cette commande retournera le nombre total de services en cours d'exécution sur votre système.
Conseil: Trier les services en cours d'exécution par utilisation de mémoire
Pour comprendre quels services utilisent le plus de ressources, vous pouvez trier les services en cours d'exécution par utilisation de mémoire. Cela peut aider les administrateurs système à optimiser les performances du système.
Voici une commande pour lister les services en cours d'exécution triés par utilisation de mémoire :
systemctl list-units --type=service --state=running --no-pager | awk '{print $1}' | xargs -I {} systemctl status {} | grep Memory | sort -rnk 3 | head -n 10
Cette commande :
- Liste tous les services en cours d'exécution
- Extrait les noms des services
- Obtient le statut de chaque service
- Filtre pour la ligne d'utilisation de la mémoire
- Trie les résultats par utilisation de mémoire (du plus élevé au plus bas)
- Affiche les 10 services consommant le plus de mémoire
La sortie ressemblera à ceci :
Memory: 1.2G
Memory: 800.5M
Memory: 456.3M
Memory: 234.1M
Memory: 189.7M
Memory: 156.2M
Memory: 98.4M
Memory: 76.9M
Memory: 54.3M
Memory: 43.8M
Commandes Systemctl avancées pour la gestion des services
Afficher des informations détaillées sur un service
Pour obtenir plus d'informations sur un service, utilisez la commande systemctl status
suivie du nom du service :
systemctl status nom_du_service
Cette commande fournit un aperçu du service, incluant :
- État actuel (actif, inactif, défaillant)
- PID principal (ID du processus)
- Utilisation de la mémoire
- Utilisation du CPU
- Heure de démarrage
- Entrées de journal récentes
Exemple: Afficher les détails du service SSH
systemctl status sshd
La sortie inclut le statut actuel du service, l'emplacement du fichier de configuration et les entrées de journal récentes, ce qui aide au dépannage.
Vérifier l'état d'un service
Pour vérifier l'état d'un service, utilisez :
systemctl is-active nom_du_service
Cette commande renvoie "active" si le service est en cours d'exécution, ou "inactive" s'il ne l'est pas.
Pour vérifier si un service démarre au démarrage :
systemctl is-enabled nom_du_service
Cela renvoie "enabled" si le service démarre automatiquement au démarrage, ou "disabled" s'il ne le fait pas.
Vous pouvez également utiliser la commande systemctl show
pour obtenir des propriétés spécifiques d'un service :
systemctl show -p ActiveState nom_du_service
systemctl show -p UnitFileState nom_du_service
Ces commandes affichent l'état actif actuel et si le service est activé.
Pour lister tous les services défaillants :
systemctl --failed --type=service
Cette commande aide à identifier les services qui ont des problèmes et qui peuvent nécessiter une attention particulière.
Méthodes alternatives pour lister les services
Utilisation de la commande PS
La commande ps
offre une autre façon de lister les services en cours d'exécution sous Linux. Bien que moins détaillée que systemctl
, elle peut donner une vue rapide des processus actifs, y compris les services.
Pour lister tous les processus en cours d'exécution, y compris les services :
ps aux
Cette commande affiche tous les processus pour tous les utilisateurs dans un format détaillé. Pour filtrer des services spécifiques, vous pouvez utiliser grep
:
ps aux | grep nom_du_service
Pour une vue ciblée des services, vous pouvez utiliser :
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
Cette commande affiche l'ID du processus, l'ID du processus parent, la commande, l'utilisation de la mémoire et l'utilisation du CPU, triés par utilisation de la mémoire.
Par rapport à systemctl
, ps
fournit :
- Des informations en temps réel sur les processus
- Des données plus détaillées sur l'utilisation des ressources
- La capacité de voir les processus non gérés par systemd
Cependant, il manque des informations spécifiques à systemd comme les états des services et les dépendances.
Conseil: Sortie PS personnalisée
Vous pouvez personnaliser la sortie de ps
pour afficher uniquement les informations dont vous avez besoin. Par exemple, pour afficher seulement le PID, le nom de la commande et l'utilisation de la mémoire des processus, utilisez :
ps -eo pid,comm,%mem --sort=-%mem | head
Cette commande trie les processus par utilisation de mémoire et affiche les 10 processus consommant le plus de mémoire.
Utilisation de la commande Top
La commande top
donne une vue dynamique et en temps réel des processus en cours d'exécution, y compris les services. Pour utiliser top
:
top
Cela ouvre un affichage interactif montrant :
- Un résumé du système (temps de fonctionnement, charge moyenne, utilisation du CPU)
- Une liste des processus (triés par utilisation du CPU par défaut)
Pour se concentrer sur les services, vous pouvez utiliser :
top -c -p $(pgrep -d',' -f nom_du_service)
Cette commande montre uniquement les processus liés au service spécifié.
Avantages de l'utilisation de top
:
- Mises à jour en temps réel des informations sur le système et les processus
- Interface interactive pour trier et filtrer
- Capacité à voir les tendances d'utilisation des ressources au fil du temps
Les limitations incluent :
- Moins d'informations spécifiques aux services par rapport à
systemctl
- Peut nécessiter plus de ressources système pour une surveillance continue
ps
et top
complètent systemctl
en fournissant différentes vues sur les services et processus en cours d'exécution, permettant une meilleure compréhension de l'activité du système.
Exemple: Surveillance du serveur web Apache
Pour surveiller le serveur web Apache en utilisant top
, vous pouvez utiliser :
top -c -p $(pgrep -d',' -f apache2)
Cette commande affichera des informations en temps réel sur tous les processus Apache, y compris leur utilisation du CPU et de la mémoire. C'est utile pour suivre la consommation de ressources d'Apache pendant les périodes de trafic élevé.