Aller au contenu
Administration Linux medium

Identifier son système Linux

14 min de lecture

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.

  • Identifier la distribution et sa version avec os-release et hostnamectl
  • 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 journalctl et systemd-analyze

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

  • 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) pour lscpu, lsblk

Trois sources, dans l’ordre de préférence.

Présent sur toutes les distributions systemd. Standardisé par systemd, lisible et parsable :

Fenêtre de terminal
cat /etc/os-release

Sortie 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=noble
ID=ubuntu
ID_LIKE=debian

Sur 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 donne une synthèse plus large : distribution, noyau, architecture, virtualisation, hôte — le tout en une commande :

Fenêtre de terminal
hostnamectl
Static hostname: master2
Icon name: computer-vm
Chassis: vm
Machine ID: e84a5b...
Boot ID: 3f21a0...
Virtualization: kvm
Operating System: Ubuntu 24.04.2 LTS
Kernel: Linux 6.8.0-58-generic
Architecture: x86-64

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 :

Fenêtre de terminal
lsb_release -a # peut renvoyer "command not found"

Remplacez-le par cat /etc/os-release partout où vous le croisez.

Fenêtre de terminal
hostname # nom court
hostname -f # FQDN (Fully Qualified Domain Name)
hostname -A # toutes les adresses IP associées au FQDN

Modifier le nom d’hôte de façon persistante (systemd) :

Fenêtre de terminal
sudo hostnamectl set-hostname admin-prod-01

Trois variantes utiles :

Fenêtre de terminal
sudo hostnamectl set-hostname admin-prod-01 --static # permanent (défaut)
sudo hostnamectl set-hostname "Poste Admin Stéphane" --pretty # libellé humain
sudo hostnamectl set-hostname admin-prod-01 --transient # éphémère, réinitialisé au reboot

La commande uname expose tout ce qu’il faut en une ligne :

Fenêtre de terminal
uname -a
Linux 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/Linux

Options ciblées :

OptionCe qu’elle afficheCas d’usage
-rVersion du noyau (6.8.0-58-generic)Vérifier si un reboot post-upgrade est nécessaire
-mArchitecture (x86_64, aarch64)Choisir la bonne image Docker, le bon binaire
-nNom d’hôte courtAlternative à hostname
-vDate de compilation du noyauVé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 :

Fenêtre de terminal
# Un fichier est créé par APT quand un reboot est requis
test -f /var/run/reboot-required && echo "Reboot requis" || echo "OK"
Fenêtre de terminal
uptime
18:29:45 up 5 days, 2:15, 1 user, load average: 0.00, 0.01, 0.05

La ligne expose :

  • heure courante
  • uptime (durée depuis le dernier boot)
  • nombre de sessions ouvertes
  • load average sur 1, 5 et 15 minutes

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 :

Fenêtre de terminal
echo "Cores: $(nproc) Load: $(uptime | awk -F'load average:' '{print $2}')"
Ratio load / nprocInterprétation
< 0.7Marge confortable
0.7 – 1.0Chargé mais OK
> 1.0 soutenuContention — des processus attendent

Pour un diagnostic complet, enchaîner avec Évaluer les performances système qui détaille la méthode USE.

Fenêtre de terminal
uptime -p # format humain : "up 5 days, 2 hours"
uptime -s # date de boot exacte : "2026-04-20 16:14:30"

Une commande dit si la machine va bien :

Fenêtre de terminal
systemctl is-system-running

Sorties possibles : running (tout va bien), degraded (au moins un service en échec), starting, stopping, maintenance, offline.

En cas de degraded, lister les fautifs :

Fenêtre de terminal
systemctl list-units --failed

Sessions utilisateur ouvertes :

Fenêtre de terminal
loginctl list-sessions
loginctl list-users

Configuration date et fuseau horaire :

Fenêtre de terminal
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: no

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

journalctl permet d’isoler les logs d’un boot spécifique :

Fenêtre de terminal
# logs du boot courant
journalctl -b
# logs du boot précédent
journalctl -b -1
# liste des boots disponibles avec leurs IDs
journalctl --list-boots

systemd-analyze donne le temps de démarrage détaillé :

Fenêtre de terminal
# vue globale
systemd-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 boot
systemd-analyze blame | head -10
# graphique SVG des dépendances (utile post-mortem)
systemd-analyze plot > boot.svg

Historique des reboots :

Fenêtre de terminal
last reboot | head -5
last -x shutdown | head -5

Cinq commandes pour balayer le matériel d’une machine en 30 secondes.

Fenêtre de terminal
lscpu

Expose 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éelle
  • Model name : modèle précis
  • Vulnerabilities: : état des mitigations par CVE
Fenêtre de terminal
free -h

Détaillé dans Diagnostiquer la mémoire sous Linux. Pour un premier coup d’œil, la colonne available est la bonne métrique — pas free.

Fenêtre de terminal
lsblk

Arbre des périphériques bloc (disques, partitions, LVM, LUKS). Complété par :

Fenêtre de terminal
lsblk -f # avec systèmes de fichiers et UUID
df -hT # espace utilisé par point de montage
Fenêtre de terminal
lspci | head -20

Cartes réseau, contrôleurs disque, GPU, tout le matériel PCI. Pour les détails d’un périphérique :

Fenêtre de terminal
lspci -v -s 00:1f.6 # mode verbose sur un slot précis
Fenêtre de terminal
lsusb

Pé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.

Fenêtre de terminal
systemd-detect-virt

Retourne kvm, qemu, vmware, docker, lxc, oracle (VirtualBox), ou none si bare metal. Équivalent rapide du champ Virtualization de hostnamectl.

  • hostnamectl avant tout sur un système systemd — c’est la vue synthétique la plus rapide.
  • os-release dans les scripts, jamais lsb_release. Il est présent partout et parsable avec . /etc/os-release puis $ID, $VERSION_ID.
  • systemctl is-system-running au 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 -r avec le dernier kernel installé après une mise à jour — si différents, un reboot est nécessaire.
  • timedatectl systématique après un reboot ou un changement de fuseau : heure synchro, NTP actif.
  • lscpu et free -h dans un script de baseline déposent un inventaire plat utile pour l’audit.
SymptômeCause probableAction
hostnamectl: command not foundSystème sans systemd ou shell restreintFallback : uname -n + cat /etc/os-release
lsb_release: command not foundPaquet non installé (défaut sur Debian 12+, RHEL 10)Ne pas l’utiliser, lire /etc/os-release à la place
hostname -f ne renvoie rienFQDN non configuré dans /etc/hosts ou DNSAjouter une ligne dans /etc/hosts avec le FQDN
uptime montre up 0:01 après un reboot inattenduLa machine a été redémarrée (panne ou OOM killer)`journalctl -b -1
systemctl is-system-running retourne degradedUn service ou un mount a échouésystemctl --failed pour la liste
timedatectl indique NTP service: inactivePas de synchro NTP activesudo systemctl enable --now systemd-timesyncd ou chronyd
lscpu affiche Vulnerable sur plusieurs CVEMitigations kernel non activéesMettre à jour le kernel ; pour un serveur exposé, ajouter les kernelParams ANSSI-BP-028
  • /etc/os-release est la source canonique pour distribution + version — préfère à lsb_release partout.
  • hostnamectl donne en une commande : hôte, noyau, architecture, virtualisation, OS.
  • uname -r / -m / -n pour lire le noyau, l’architecture et le nom court.
  • uptime : divisez le load average par nproc pour l’interpréter.
  • systemctl is-system-running puis --failed sont le duo pour vérifier la santé globale.
  • timedatectl vérifie heure, fuseau et synchro NTP en une commande.
  • journalctl -b -1 donne les logs du boot précédent — essentiel après un crash.
  • systemd-analyze blame liste les services les plus lents au démarrage.
  • Inventaire matériel : lscpu, free -h, lsblk, lspci, lsusb.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn