12 commandes Linux indispensables pour diagnostiquer un serveur

Un serveur Linux devient lent, un site ne répond plus ou une application cesse de fonctionner ? Avant de modifier la configuration ou de redémarrer la machine, il est utile de comprendre ce qui se passe.

Linux fournit de nombreux outils intégrés pour examiner les ressources, les processus, les connexions réseau et les journaux système.

Voici 12 commandes pratiques pour effectuer un premier diagnostic. Elles sont adaptées à de nombreuses distributions Linux modernes, même si certaines options peuvent varier selon les outils installés.

1. uptime : vérifier la charge du système

uptime

Cette commande affiche l’heure, la durée de fonctionnement, le nombre d’utilisateurs connectés et les moyennes de charge du système sur différentes périodes.

Les valeurs de charge ne représentent pas directement un pourcentage d’utilisation du processeur. Elles reflètent notamment les processus en cours d’exécution ou en attente de ressources.

Sur une machine disposant de plusieurs processeurs logiques, une charge supérieure à 1 n’indique donc pas automatiquement un problème. Comparez les valeurs au nombre de processeurs et observez leur évolution.

2. top : observer les processus actifs

top

top affiche les processus en cours et fournit des informations sur le processeur, la mémoire et l’activité des applications.

Utilisez-le pour repérer les processus qui consomment beaucoup de CPU ou de mémoire.

Un processus qui apparaît en haut de la liste n’est pas nécessairement défectueux : il peut effectuer une tâche légitime. Observez son comportement dans le temps avant de décider de l’arrêter.

Quittez l’interface avec la touche q.

3. free -h : contrôler la mémoire

free -h

Cette commande affiche la mémoire physique et l’espace d’échange.

Sous Linux, une partie de la mémoire disponible peut être utilisée comme cache pour accélérer les accès aux fichiers. Une valeur faible dans la colonne free ne signifie donc pas forcément que le système manque de mémoire.

Examinez surtout la mémoire disponible et la tendance générale. Si le serveur utilise intensivement le swap ou que des processus sont arrêtés par manque de mémoire, approfondissez le diagnostic.

4. df -h : vérifier l’espace disque

df -h

df affiche l’espace total, utilisé et disponible pour les systèmes de fichiers montés.

Si une partition approche de 100 %, des applications peuvent ne plus pouvoir écrire de fichiers, créer des journaux ou enregistrer des données.

Vérifiez chaque point de montage séparément. Un serveur peut disposer de beaucoup d’espace globalement tout en ayant une partition spécifique saturée.

5. du : trouver les répertoires volumineux

sudo du -xhd1 /var 2>/dev/null | sort -h

Cette commande examine les répertoires du premier niveau sous /var et trie les résultats par taille.

Elle permet de repérer les emplacements qui méritent une inspection plus approfondie : journaux, caches, fichiers d’application ou données locales.

Les options présentées sont compatibles avec de nombreuses versions de GNU du. Sur d’autres systèmes, leur disponibilité peut varier.

Ne supprimez pas automatiquement les répertoires les plus volumineux. Commencez par identifier leur contenu et les applications qui les utilisent.

6. ps : examiner les processus

ps aux

ps affiche les processus, leur propriétaire et différentes informations sur leur utilisation des ressources.

Pour rechercher les processus associés à un nom particulier :

ps aux | grep nginx

Cette recherche peut également afficher le processus grep lui-même. Pour une recherche plus ciblée, vous pouvez utiliser pgrep :

pgrep -a nginx

Le résultat dépend du nom réel du processus. Une absence de résultat ne signifie pas nécessairement que l’application est entièrement indisponible : le nom recherché peut être différent ou le service peut fonctionner dans un conteneur.

7. systemctl : vérifier un service

systemctl --failed

Cette commande liste les unités systemd actuellement en échec.

Pour examiner un service précis, par exemple Nginx :

sudo systemctl status nginx

Vous pourrez notamment vérifier si le service est actif, arrêté ou en échec.

Si le service ne fonctionne pas, ne vous contentez pas de le redémarrer. Consultez ses journaux et vérifiez sa configuration afin d’identifier la cause.

8. journalctl : consulter les erreurs système

sudo journalctl -b -p err

Cette commande affiche les messages d’erreur du démarrage actuel conservés dans le journal systemd.

Pour examiner les derniers messages d’un service :

sudo journalctl -u nginx -n 100 --no-pager

Remplacez nginx par le nom de l’unité concernée.

Les journaux peuvent révéler une configuration incorrecte, un fichier manquant, une dépendance indisponible ou une erreur de permission. Il est préférable de corriger la cause plutôt que de multiplier les redémarrages.

9. ss : examiner les ports réseau

sudo ss -lntup

Cette commande affiche les sockets en écoute, les ports TCP et UDP et, lorsque les permissions le permettent, les processus associés.

Elle est utile lorsqu’un site ne répond pas ou qu’une application ne semble pas écouter sur le port attendu.

Pour rechercher un port TCP précis, par exemple le port 443 :

sudo ss -lntp 'sport = :443'

L’absence d’un port dans cette liste peut indiquer que le service n’a pas démarré, qu’il écoute sur une autre adresse ou qu’il utilise un port différent.

10. ip : examiner les interfaces réseau

ip address

Cette commande affiche les interfaces réseau et leurs adresses IP.

Pour consulter les routes :

ip route

Ces informations sont utiles lorsqu’un serveur semble avoir perdu sa connectivité ou lorsqu’une application doit être accessible depuis un réseau spécifique.

La présence d’une adresse IP ne garantit pas que la connexion fonctionne de bout en bout. Il peut également exister des problèmes de routage, de pare-feu, de DNS ou de configuration chez l’hébergeur.

11. curl : tester une réponse HTTP

curl -I https://example.com

curl permet d’effectuer une requête HTTP et d’examiner les en-têtes de la réponse.

Remplacez example.com par le domaine à tester.

Pour obtenir davantage d’informations sur la connexion :

curl -v https://example.com

Cette commande aide à distinguer certaines erreurs de connexion, de négociation TLS et de réponse HTTP.

N’oubliez pas qu’un test exécuté depuis le serveur lui-même peut produire un résultat différent de celui obtenu depuis un réseau extérieur. Pour diagnostiquer un site inaccessible, comparez les tests internes et externes.

12. find : rechercher des fichiers récents ou volumineux

Pour rechercher les fichiers de plus de 500 Mo sous /var :

sudo find /var -type f -size +500M -print 2>/dev/null

Pour rechercher les fichiers modifiés au cours des dernières 24 heures :

sudo find /var -type f -mtime -1 -print 2>/dev/null

Ces commandes permettent de repérer des fichiers inhabituels, des archives volumineuses ou des journaux qui augmentent rapidement.

Le résultat doit être interprété avec prudence. Un gros fichier peut être une base de données, une archive nécessaire ou un fichier temporaire encore utilisé par une application.

Tableau récapitulatif

Problème observéCommandes à utiliser
Serveur lentuptime, top, ps aux
Mémoire presque saturéefree -h, top
Partition pleinedf -h, du
Service indisponiblesystemctl, journalctl
Port inaccessibless, curl
Problème réseauip address, ip route, curl
Fichiers volumineuxfind, du

Une méthode simple pour diagnostiquer un serveur

Lorsque vous ne connaissez pas la cause d’une panne, suivez cet ordre :

  1. Vérifiez si le serveur est joignable.
  2. Contrôlez la charge et la mémoire.
  3. Vérifiez l’espace disque disponible.
  4. Examinez l’état du service concerné.
  5. Consultez les journaux.
  6. Vérifiez les ports et les connexions réseau.
  7. Formulez une hypothèse et testez-la avant de modifier la configuration.

Cette approche limite les changements inutiles et facilite la compréhension de la panne.

FAQ

Dois-je installer des outils supplémentaires pour utiliser ces commandes ?

La plupart sont disponibles sur les distributions Linux courantes. Certaines commandes, comme curl, peuvent nécessiter une installation préalable.

Faut-il exécuter toutes les commandes avec sudo ?

Non. Utilisez sudo uniquement lorsque des permissions supplémentaires sont nécessaires. Les privilèges administrateur doivent rester limités au strict nécessaire.

Quelle commande utiliser en premier lorsqu’un serveur est lent ?

Commencez généralement par uptime, top, free -h et df -h. Ces commandes donnent rapidement un aperçu de la charge, de la mémoire et du stockage.

Ces commandes fonctionnent-elles dans Docker ?

Beaucoup peuvent être utilisées dans un conteneur si les outils correspondants y sont installés. Toutefois, un conteneur n’expose pas nécessairement les mêmes informations que l’hôte, notamment pour les processus, le réseau et les ressources.

Conclusion

Ces 12 commandes constituent une boîte à outils de base pour l’administration Linux. Elles permettent d’identifier de nombreux problèmes liés aux ressources, aux services, au stockage et au réseau.

Le plus important n’est pas de mémoriser toutes les options, mais de savoir quelle information rechercher, comment interpréter les résultats et quelles vérifications effectuer avant de modifier un serveur.