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 |
À 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.