Vous arrivez sur une machine Linux inconnue et vous devez vous repérer. Quelle distribution ? Quelle version de noyau ? Depuis quand tourne-t-elle ? Des services en échec ? Quel CPU, quelle RAM ? Ce guide aligne les commandes modernes qui répondent à ces questions en quelques minutes. On préfère hostnamectl et /etc/os-release aux vieux lsb_release / arch qui ne sont plus installés par défaut, et on s'appuie sur les outils systemd quand ils sont plus lisibles que l'héritage.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Identifier la distribution et sa version avec
os-releaseethostnamectl - Lire le noyau, l'architecture et le nom d'hôte
- Mesurer l'uptime et interpréter le load average
- Vérifier l'état global systemd et les services en échec
- Faire l'inventaire matériel de base (CPU, mémoire, disques, PCI, USB)
- Analyser le dernier boot avec
journalctletsystemd-analyze
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »Trois scénarios concrets :
- Onboarding d'un serveur existant, vous reprenez une machine que vous n'avez pas installée. Premier réflexe : un état des lieux.
- Diagnostic d'incident, un service est lent, un reboot s'est mal passé. Avant tout debug, savoir sur quoi on travaille.
- Audit ou inventaire, écrire un script qui collecte distribution + version kernel + uptime sur un parc hétérogène.
C'est une compétence LFCS (Essential Commands) et RHCSA (Understand and use essential tools).
Prérequis
Section intitulée « Prérequis »- Un shell avec droits utilisateur (la plupart des commandes n'exigent pas
sudo) - Un système avec systemd (Ubuntu 16.04+, Debian 8+, RHEL 7+, Rocky, Fedora), pour les commandes
hostnamectl,timedatectl,systemctl - Les outils
util-linux(présent par défaut partout) pourlscpu,lsblk
Identifier la distribution
Section intitulée « Identifier la distribution »Trois sources, dans l'ordre de préférence.
/etc/os-release, canonique moderne
Section intitulée « /etc/os-release, canonique moderne »Présent sur toutes les distributions systemd. Standardisé par systemd, lisible et parsable :
cat /etc/os-releaseSortie typique sur Ubuntu 24.04 :
PRETTY_NAME="Ubuntu 24.04.2 LTS"NAME="Ubuntu"VERSION_ID="24.04"VERSION="24.04.2 LTS (Noble Numbat)"VERSION_CODENAME=nobleID=ubuntuID_LIKE=debianSur RHEL / Rocky :
NAME="Rocky Linux"VERSION="9.4 (Blue Onyx)"ID="rocky"ID_LIKE="rhel centos fedora"VERSION_ID="9.4"Les champs ID, VERSION_ID et ID_LIKE sont ce qu'on utilise dans les scripts pour écrire du code conditionnel par distribution.
hostnamectl, la vue systemd
Section intitulée « hostnamectl, la vue systemd »hostnamectl donne une synthèse plus large : distribution, noyau, architecture, virtualisation, hôte, le tout en une commande :
hostnamectl Static hostname: master2 Icon name: computer-vm Chassis: vm Machine ID: e84a5b... Boot ID: 3f21a0... Virtualization: kvmOperating System: Ubuntu 24.04.2 LTS Kernel: Linux 6.8.0-58-generic Architecture: x86-64lsb_release, héritage
Section intitulée « lsb_release, héritage »Historiquement la commande de référence, mais plus installée par défaut sur Debian 12, Ubuntu 24.04 ou RHEL 10. À éviter dans les scripts modernes :
lsb_release -a # peut renvoyer "command not found"Remplacez-le par cat /etc/os-release partout où vous le croisez.
Identifier l'hôte
Section intitulée « Identifier l'hôte »hostname # nom courthostname -f # FQDN (Fully Qualified Domain Name)hostname -A # toutes les adresses IP associées au FQDNModifier le nom d'hôte de façon persistante (systemd) :
sudo hostnamectl set-hostname admin-prod-01Trois variantes utiles :
sudo hostnamectl set-hostname admin-prod-01 --static # permanent (défaut)sudo hostnamectl set-hostname "Poste Admin Stéphane" --pretty # libellé humainsudo hostnamectl set-hostname admin-prod-01 --transient # éphémère, réinitialisé au rebootIdentifier le noyau et l'architecture
Section intitulée « Identifier le noyau et l'architecture »La commande uname expose tout ce qu'il faut en une ligne :
uname -aLinux master2 6.8.0-58-generic #60-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 14 18:29:48 UTC 2025 x86_64 x86_64 x86_64 GNU/LinuxOptions ciblées :
| Option | Ce qu'elle affiche | Cas d'usage |
|---|---|---|
-r | Version du noyau (6.8.0-58-generic) | Vérifier si un reboot post-upgrade est nécessaire |
-m | Architecture (x86_64, aarch64) | Choisir la bonne image Docker, le bon binaire |
-n | Nom d'hôte court | Alternative à hostname |
-v | Date de compilation du noyau | Vérifier l'âge du noyau installé |
La commande arch (qui affiche uniquement l'équivalent de uname -m) existe encore mais n'apporte rien, préférer uname -m.
Pour vérifier si un reboot est nécessaire après une mise à jour de noyau :
# Un fichier est créé par APT quand un reboot est requistest -f /var/run/reboot-required && echo "Reboot requis" || echo "OK"# needs-restarting est fourni par dnf-utilssudo dnf install -y dnf-utilssudo needs-restarting -rUptime et charge
Section intitulée « Uptime et charge »uptime 18:29:45 up 5 days, 2:15, 1 user, load average: 0.00, 0.01, 0.05La ligne expose :
- heure courante
- uptime (durée depuis le dernier boot)
- nombre de sessions ouvertes
- load average sur 1, 5 et 15 minutes
Interpréter le load average
Section intitulée « Interpréter le load average »Le load average indique le nombre moyen de processus en attente d'un CPU ou d'une ressource (I/O). Divisez-le par le nombre de cœurs (nproc) pour obtenir un ratio :
echo "Cores: $(nproc) Load: $(uptime | awk -F'load average:' '{print $2}')"Ratio load / nproc | Interprétation |
|---|---|
| < 0.7 | Marge confortable |
| 0.7 – 1.0 | Chargé mais OK |
| > 1.0 soutenu | Contention, des processus attendent |
Pour un diagnostic complet, enchaîner avec Évaluer les performances système qui détaille la méthode USE.
Variantes utiles
Section intitulée « Variantes utiles »uptime -p # format humain : "up 5 days, 2 hours"uptime -s # date de boot exacte : "2026-04-20 16:14:30"État global systemd
Section intitulée « État global systemd »Une commande dit si la machine va bien :
systemctl is-system-runningSorties possibles : running (tout va bien), degraded (au moins un service en échec), starting, stopping, maintenance, offline.
En cas de degraded, lister les fautifs :
systemctl list-units --failedSessions utilisateur ouvertes :
loginctl list-sessionsloginctl list-usersConfiguration date et fuseau horaire :
timedatectl Local time: Fri 2026-04-25 14:30:12 CEST Universal time: Fri 2026-04-25 12:30:12 UTC RTC time: Fri 2026-04-25 12:30:12 Time zone: Europe/Paris (CEST, +0200)System clock synchronized: yes NTP service: active RTC in local TZ: noLes lignes System clock synchronized et NTP service sont ce qu'on vérifie après un reboot pour confirmer que l'heure est d'aplomb.
Logs et analyse du dernier boot
Section intitulée « Logs et analyse du dernier boot »journalctl permet d'isoler les logs d'un boot spécifique :
# logs du boot courantjournalctl -b
# logs du boot précédentjournalctl -b -1
# liste des boots disponibles avec leurs IDsjournalctl --list-bootssystemd-analyze donne le temps de démarrage détaillé :
# vue globalesystemd-analyze
# Startup finished in 3.481s (kernel) + 41.225s (initrd) + 1min 14.060s (userspace) = 1min 58.766s
# top 10 des services les plus lents au bootsystemd-analyze blame | head -10
# graphique SVG des dépendances (utile post-mortem)systemd-analyze plot > boot.svgHistorique des reboots :
last reboot | head -5last -x shutdown | head -5Inventaire matériel rapide
Section intitulée « Inventaire matériel rapide »Cinq commandes pour balayer le matériel d'une machine en 30 secondes.
CPU, lscpu
Section intitulée « CPU, lscpu »lscpuExpose architecture, modèle de processeur, nombre de cœurs, fréquence, cache, mitigations CPU (Spectre/Meltdown). Les lignes à retenir :
Architecture:x86_64,aarch64,armv7l…CPU(s): total logique (cœurs × threads/cœur)Core(s) per socket,Thread(s) per core: topologie réelleModel name: modèle précisVulnerabilities:: état des mitigations par CVE
Mémoire, free -h
Section intitulée « Mémoire, free -h »free -hDétaillé dans Diagnostiquer la mémoire sous Linux. Pour un premier coup d'œil, la colonne available est la bonne métrique, pas free.
Disques, lsblk
Section intitulée « Disques, lsblk »lsblkArbre des périphériques bloc (disques, partitions, LVM, LUKS). Complété par :
lsblk -f # avec systèmes de fichiers et UUIDdf -hT # espace utilisé par point de montagePCI, lspci
Section intitulée « PCI, lspci »lspci | head -20Cartes réseau, contrôleurs disque, GPU, tout le matériel PCI. Pour les détails d'un périphérique :
lspci -v -s 00:1f.6 # mode verbose sur un slot précisUSB, lsusb
Section intitulée « USB, lsusb »lsusbPériphériques USB actuellement connectés. Utile pour vérifier la détection d'une clé, d'un lecteur de carte ou d'un Yubikey.
Virtualisation, systemd-detect-virt
Section intitulée « Virtualisation, systemd-detect-virt »systemd-detect-virtRetourne kvm, qemu, vmware, docker, lxc, oracle (VirtualBox), ou none si bare metal. Équivalent rapide du champ Virtualization de hostnamectl.
Bonnes pratiques
Section intitulée « Bonnes pratiques »hostnamectlavant tout sur un système systemd, c'est la vue synthétique la plus rapide.os-releasedans les scripts, jamaislsb_release. Il est présent partout et parsable avec. /etc/os-releasepuis$ID,$VERSION_ID.systemctl is-system-runningau début de chaque intervention, vous voyez tout de suite si un service est déjà tombé avant que vous ne touchiez quoi que ce soit.- Comparer
uname -ravec le dernier kernel installé après une mise à jour, si différents, un reboot est nécessaire. timedatectlsystématique après un reboot ou un changement de fuseau : heure synchro, NTP actif.lscpuetfree -hdans un script de baseline déposent un inventaire plat utile pour l'audit.
Dépannage rapide
Section intitulée « Dépannage rapide »| Symptôme | Cause probable | Action |
|---|---|---|
hostnamectl: command not found | Système sans systemd ou shell restreint | Fallback : uname -n + cat /etc/os-release |
lsb_release: command not found | Paquet non installé (défaut sur Debian 12+, RHEL 10) | Ne pas l'utiliser, lire /etc/os-release à la place |
hostname -f ne renvoie rien | FQDN non configuré dans /etc/hosts ou DNS | Ajouter une ligne dans /etc/hosts avec le FQDN |
uptime montre up 0:01 après un reboot inattendu | La machine a été redémarrée (panne ou OOM killer) | `journalctl -b -1 |
systemctl is-system-running retourne degraded | Un service ou un mount a échoué | systemctl --failed pour la liste |
timedatectl indique NTP service: inactive | Pas de synchro NTP active | sudo systemctl enable --now systemd-timesyncd ou chronyd |
lscpu affiche Vulnerable sur plusieurs CVE | Mitigations kernel non activées | Mettre à jour le kernel ; pour un serveur exposé, ajouter les kernelParams ANSSI-BP-028 |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »/etc/os-releaseest la source canonique pour distribution + version, préfère àlsb_releasepartout.hostnamectldonne en une commande : hôte, noyau, architecture, virtualisation, OS.uname -r/-m/-npour lire le noyau, l'architecture et le nom court.uptime: divisez le load average parnprocpour l'interpréter.systemctl is-system-runningpuis--failedsont le duo pour vérifier la santé globale.timedatectlvérifie heure, fuseau et synchro NTP en une commande.journalctl -b -1donne les logs du boot précédent, essentiel après un crash.systemd-analyze blameliste les services les plus lents au démarrage.- Inventaire matériel :
lscpu,free -h,lsblk,lspci,lsusb.