glossaire-linux

Système

Arrêter, redémarrer, surveiller, gérer les services systemd, consulter les logs, inspecter le matériel et le stockage.

Arrêt et redémarrage

Toutes les commandes de cette section nécessitent les droits root.

shutdown

Arrêter ou redémarrer la machine, immédiatement ou plus tard

Options

-h nowArrêt immédiat.
-h +10Arrêt programmé dans 10 minutes (avec message aux utilisateurs connectés).
-r nowRedémarrage immédiat.
-r 02:00Redémarrage à 2h du matin.
-cAnnule un arrêt programmé.
# shutdown -h now
Arrêt immédiat de la machine.
# shutdown -r +5 "Redémarrage pour mise à jour"
Redémarrage dans 5 minutes avec un message diffusé aux sessions ouvertes.
# shutdown -c
Annule un arrêt programmé.
Sur systemd Sur les systèmes utilisant systemd, shutdown, reboot et poweroff sont généralement fournis par systemd. D’autres distributions utilisent OpenRC ou un autre init : ces équivalences ne sont alors pas garanties. shutdown permet notamment de programmer un arrêt ou un redémarrage avec un message.

Voir aussi : reboot / halt / poweroff systemctl

reboot · halt · poweroff · systemctl

Raccourcis directs et leurs équivalents systemd

Sur systemd, les commandes legacy reboot, halt et poweroff sont des alias vers systemctl. La forme systemctl <cible> est plus explicite et donne accès à des états supplémentaires (mise en veille, hibernation, modes de récupération) que les commandes legacy ne couvrent pas.

Équivalences et états supplémentaires

reboot → systemctl rebootRedémarrage immédiat.
poweroff → systemctl poweroffArrêt et coupure d'alimentation (le défaut moderne).
halt → systemctl haltArrête le système sans couper l'alimentation (rare aujourd'hui).
systemctl suspendMise en veille : RAM toujours alimentée, réveil instantané.
systemctl hibernateHibernation : état RAM sauvé sur disque (swap), machine éteinte.
systemctl hybrid-sleepCombine les deux : sauvegarde sur disque puis veille RAM.
systemctl rescueBascule à chaud en mode mono-utilisateur, sans services réseau.
systemctl emergencyMode de dépannage minimal sur la console. La racine peut être en lecture seule ou en lecture-écriture selon l’état préalable ; l’authentification dépend de la distribution.
# systemctl poweroff
Arrêt propre via systemd, équivalent moderne de poweroff ou shutdown -h now. C'est la forme qu'on retrouve dans les scripts récents.
# systemctl suspend
Mise en veille immédiate, inaccessible via shutdown ou halt. La RAM reste alimentée — le réveil est quasi instantané mais la batterie continue de se vider.
# systemctl rescue
Bascule en mode rescue pour une maintenance réduite. Cela ne démonte pas automatiquement les systèmes de fichiers : pour fsck, vérifier le démontage et utiliser un environnement de secours démarré séparément pour la racine. systemctl default revient à la cible normale.
# systemctl reboot --firmware-setup
Demande au firmware UEFI d’ouvrir son interface de réglages au prochain redémarrage, si la machine et le firmware prennent en charge cette fonction. Ce n’est pas une garantie sur une machine démarrée en mode BIOS classique.
halt vs poweroff : historiquement, halt arrêtait le système sans couper l'alimentation — l'utilisateur appuyait ensuite sur le bouton physique. Sur du matériel moderne avec ACPI, c'est presque toujours poweroff qu'on veut. halt survit pour les rares cas où on travaille sur du matériel ancien ou en environnement de test sans gestion d'alimentation.

Voir aussi : shutdown systemctl

Services avec systemd

systemd est le système d'init de toutes les distributions modernes. systemctl est sa commande principale.

systemctl

Piloter les services et l'état du système

Sous-commandes principales

startDémarre le service.
stopArrête le service.
restartArrête puis redémarre.
reloadDemande au service de recharger sa configuration sans s'arrêter.
statusAffiche l'état + dernières lignes de log.
enableActive le démarrage automatique au boot.
disableDésactive le démarrage automatique.
is-activeRenvoie active/inactive (utile en script).
is-enabledAffiche l’état d’activation : enabled, disabled mais aussi static, masked, indirect, etc. Le statut de sortie indique si l’unité est considérée comme activée, pas si elle tourne.
list-unitsListe les unités chargées, actives par défaut, de tous les types ; ajouter --type=service et --all pour adapter la sélection.
daemon-reloadRecharge les fichiers d'unité après modification.
# systemctl status nginx
État du service + dernières lignes de log. Premier réflexe en cas de souci.
# systemctl reload nginx
Demande un rechargement si le service le prend en charge. Pour nginx, les workers sont renouvelés sans couper brutalement les connexions. Un restart est une autre opération : il arrête puis redémarre le service et peut interrompre des connexions.
# systemctl enable --now ssh
Active et démarre maintenant le service SSH nommé ssh sur Debian/Ubuntu. Sur Fedora/RHEL, il se nomme généralement sshd : adapter le nom de l’unité.
$ systemctl list-units --type=service --state=failed
Liste tous les services en erreur — utile pour diagnostiquer un système instable.
# systemctl daemon-reload
systemctl restart mon-service
Après avoir modifié /etc/systemd/system/mon-service.service, il faut daemon-reload pour que systemd relise sa définition.
Logs avec journalctl : voir l'article dédié juste en dessous.

journalctl

Consulter les logs collectés par systemd

Sur les distros à base de systemd-journald, toutes les sorties stdout/stderr des services et les messages kernel sont centralisés dans le journal binaire de systemd. journalctl l'interroge avec des filtres riches : par unité, par fenêtre temporelle, par priorité, par boot.

Options principales

-u UNITELogs d'un service précis : journalctl -u nginx.
-ffollow : suit en temps réel (équivalent tail -f).
-bLogs du boot courant. -b -1 pour le précédent, -b -2 pour l'avant-dernier, etc.
--since "..." / --until "..."Fenêtre temporelle. Accepte "1 hour ago", "yesterday", "2024-01-15", "2024-01-15 14:30".
-p PRIOFiltre par priorité : err, warning, info, debug… Garde aussi tout ce qui est plus grave.
-kMessages kernel uniquement (équivalent dmesg mais avec les filtres journalctl).
-rPlus récent en premier (utile pour parcourir avec less).
-n NLimite aux N dernières lignes.
--vacuum-time=2weeksSupprime les logs antérieurs à 2 semaines (libère du disque).
$ journalctl -u nginx -f
Suit les messages collectés dans le journal pour l’unité nginx. Les fichiers access.log et error.log ne sont pas automatiquement importés : leur présence ici dépend de la configuration de nginx et de la collecte. Pour des logs écrits dans un fichier, utiliser aussi tail -F sur leur chemin.
$ journalctl -u nginx --since "1 hour ago" -p err
Erreurs nginx de la dernière heure. Combo -u + --since + -p typique pour un debug ciblé.
$ journalctl -b -p warning
Tous les warnings (et plus graves) depuis le dernier démarrage. Premier coup d'œil après un reboot suspect.
$ journalctl --since today -k | grep -i usb
Messages kernel d'aujourd'hui parlant d'USB. Pratique quand on branche un périphérique qui n'est pas reconnu — combine --since pour réduire le bruit, -k pour cibler le kernel.
# journalctl --vacuum-size=500M
Supprime les plus anciens fichiers de journal archivés jusqu’à la limite possible. Les fichiers actifs ne sont pas supprimés : la taille totale peut rester supérieure à 500 Mo. Utiliser --rotate avant --vacuum-size pour rendre les fichiers actifs éligibles, et SystemMaxUse= pour une politique persistante.

Voir aussi : systemctl dmesg tail grep

systemd timers (.timer)

Planifier des tâches façon systemd : l'alternative moderne à cron

Un timer systemd déclenche une unité .service à intervalle ou à heure fixe. Face à cron : journalisation native (journalctl -u), dépendances entre unités, rattrapage des exécutions manquées quand la machine était éteinte (Persistent=true), précision sous la minute. Le prix : deux fichiers à écrire au lieu d'une ligne de crontab.

Un timer fonctionne toujours en paire, même nom de base : backup.timer (le quand) déclenche backup.service (le quoi).

Syntaxe

# /etc/systemd/system/backup.service
[Unit]
Description=Sauvegarde quotidienne

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

# /etc/systemd/system/backup.timer
[Unit]
Description=Déclenche la sauvegarde quotidienne

[Timer]
OnCalendar=*-*-* 03:15:00
Persistent=true

[Install]
WantedBy=timers.target

Côté service, Type=oneshot (il s'exécute puis se termine, ce n'est pas un démon) et pas de section [Install] — c'est le timer qui le déclenche. Côté timer, OnCalendar fixe l'horaire, Persistent=true rejoue au prochain boot une exécution ratée (ce que cron classique ne fait pas, anacron si), et WantedBy=timers.target l'ancre au démarrage.

# systemctl daemon-reload
systemctl enable --now backup.timer
systemctl list-timers --all
NEXT                        LEFT      UNIT          ACTIVATES
Tue 2026-06-25 03:15:00 ... 9h left   backup.timer  backup.service
Après écriture des fichiers : recharger la config, activer le timer (pas le service !), puis vérifier. list-timers donne la prochaine échéance — l'équivalent systemd de crontab -l. Pour tester le traitement seul : systemctl start backup.service puis journalctl -u backup.service.

Expressions OnCalendar courantes

hourly / daily / weeklyRaccourcis : top de l'heure / minuit / lundi minuit.
*-*-* 03:15:00Tous les jours à 3h15.
Mon *-*-* 09:00:00Chaque lundi à 9h.
*-*-01 00:00:00Le 1er de chaque mois.
*:0/15Toutes les 15 minutes. Tester une expression : systemd-analyze calendar "...".
Timer utilisateur (sans root) : les mêmes fichiers dans ~/.config/systemd/user/ + systemctl --user enable --now backup.timer donnent un timer qui tourne sous son propre compte, sans privilèges. loginctl enable-linger $USER le fait tourner même sans session ouverte.

Voir aussi : systemctl journalctl crontab systemd-analyze

logger

Écrire un message dans syslog depuis la ligne de commande

logger envoie un message dans le système de journalisation (syslog / journald) sans avoir à écrire dans un fichier soi-même. Indispensable dans les scripts qui doivent laisser une trace cohérente avec le reste des logs système — visible ensuite via journalctl ou tail /var/log/syslog.

Options principales

-t TAGPréfixe les messages avec un tag identifiable (souvent le nom du script). Indispensable pour filtrer après.
-p FACILITY.LEVELPrécise la facility (user, daemon, auth, local0..7) et le niveau (emerg, alert, crit, err, warning, notice, info, debug).
-sÉcrit aussi sur stderr (en plus du journal). Pratique pour un script interactif.
-iAjoute le PID du processus logger au tag.
-f FICHIEREnvoie le contenu d'un fichier comme messages (un par ligne).
$ logger "Sauvegarde lancee a $(date +%F)"
Message simple, facility par défaut user, niveau notice. Visible dans journalctl --since today avec le nom de l'utilisateur courant comme tag.
$ # Dans un script de sauvegarde :
logger -t backup -p user.info "demarrage du job"
# ... operations ...
logger -t backup -p user.err "echec sur $fichier"
Pattern script. Le tag backup permet ensuite : journalctl -t backup --since today pour ne voir que les logs de ce script. Le niveau err permet de filtrer avec -p err et de déclencher des alertes Prometheus/Loki basées sur le niveau syslog.
$ long-script.sh 2>&1 | logger -t long-script
Rediriger toute la sortie d'un script vers syslog. Utile quand le script tourne via cron ou en arrière-plan et qu'on ne veut pas gérer un fichier de log à la main — journald s'occupe de la rotation.
Vérifier dans journalctl : journalctl -t backup -f suit les messages tagués backup. -p err inclut err et les niveaux plus graves ; pour uniquement err, utiliser -p err..err. Un intervalle explicite tel que -p err..warning sélectionne cette plage.

Voir aussi : journalctl tee crontab

logrotate

Faire tourner, compresser et purger les journaux applicatifs

logrotate applique les règles déclarées dans /etc/logrotate.conf et /etc/logrotate.d/. Il est généralement lancé périodiquement par cron ou par un timer systemd. Il gère les fichiers de logs applicatifs ; le journal systemd se règle séparément avec journald.conf.

$ sudo logrotate --debug /etc/logrotate.conf
Simule le traitement et affiche le diagnostic sans modifier les journaux.
$ sudo logrotate --force --verbose /etc/logrotate.conf
Force une rotation pour tester une configuration. À utiliser avec prudence : cette commande modifie les fichiers concernés.
Ne pas confondre les journaux applicatifs et journald logrotate ne limite pas la taille du journal binaire de systemd. Pour celui-ci, consulter journalctl --disk-usage et configurer SystemMaxUse= dans /etc/systemd/journald.conf.

Voir aussi : journalctl logger

timedatectl

Horloge système, fuseau horaire et synchronisation NTP

Contrôleur systemd pour l'heure, le fuseau et la synchronisation NTP. Remplace l'ancien combo date + hwclock + /etc/timezone sur les distributions modernes. Sans argument, affiche un statut complet (heure locale, UTC, RTC, timezone, NTP actif ou non).

Sous-commandes principales

statusÉtat complet (par défaut sans argument).
set-time "YYYY-MM-DD HH:MM:SS"Fixe l'heure manuellement (requiert NTP désactivé).
set-timezone ZONEChange le fuseau (ex. Europe/Paris).
list-timezonesListe tous les fuseaux disponibles.
set-ntp true / falseActive ou désactive un service de synchronisation reconnu par systemd-timedated, par exemple systemd-timesyncd ou chronyd selon la distribution.
set-local-rtc 0Stocke l'horloge matérielle en UTC (recommandé, défaut). À 1 uniquement pour dual-boot Windows.
$ timedatectl
Local time:                Fri 2026-05-15 14:32:11 CEST
Universal time:            Fri 2026-05-15 12:32:11 UTC
RTC time:                  Fri 2026-05-15 12:32:10
Time zone:                 Europe/Paris (CEST, +0200)
System clock synchronized: yes
NTP service:               active
RTC in local TZ:           no
Affiche notamment si un service NTP est actif et si l’horloge est synchronisée. Le service actif peut être systemd-timesyncd ou un autre démon reconnu, tel chronyd ; actif ne signifie pas nécessairement déjà synchronisé.
# timedatectl set-timezone Europe/Paris
Modifie le fuseau système, notamment /etc/localtime. De nombreux programmes le prennent en compte, mais ceux qui mettent en cache le fuseau ou fixent TZ peuvent nécessiter un redémarrage ou conserver leur propre réglage.
$ timedatectl list-timezones | grep -i paris
Europe/Paris
Trouver le nom exact d'un fuseau avant de le passer à set-timezone.
# timedatectl set-ntp true
Active le premier service de synchronisation disponible reconnu par systemd-timedated. Vérifier ensuite timedatectl status et le service réellement utilisé (par exemple chronyd ou systemd-timesyncd). La synchronisation peut prendre du temps ou échouer si les sources sont injoignables.

Voir aussi : date systemctl

systemd-analyze

Analyser le temps de boot et valider des unit files

Outil d'introspection de systemd. Principalement deux usages : mesurer ce qui ralentit le démarrage et valider la syntaxe d'un fichier .service avant de le mettre en place.

Sous-commandes utiles

time (défaut)Affiche les durées de démarrage disponibles (notamment noyau et espace utilisateur) et le délai d’atteinte de certaines cibles. Le délai de graphical.target est compris dans le démarrage, ce n’est pas un terme à ajouter une deuxième fois.
blameListe les services par durée d'initialisation décroissante.
critical-chain [unit]Affiche la chaîne critique : enchaînement séquentiel qui retarde le boot.
plot > boot.svgGénère un diagramme SVG du boot, lisible dans un navigateur.
verify FICHIER.serviceVérifie la syntaxe d'un fichier d'unité sans l'installer.
cat-config systemd/system.confAffiche les fichiers de configuration et leurs fragments dans l’ordre de lecture. Cela n’inclut pas tous les défauts compilés et ne prouve pas qu’une instance déjà démarrée a rechargé ces réglages.
$ systemd-analyze
Startup finished in 3.421s (kernel) + 12.879s (userspace) = 16.301s
Vue rapide. Le userspace est ce que vous pouvez optimiser : services lents, dépendances inutiles. Le kernel dépend du firmware et du matériel.
$ systemd-analyze blame | head -10
8.421s NetworkManager-wait-online.service
2.103s snapd.seeded.service
1.832s plymouth-quit-wait.service
...
Le suspect numéro un sur la plupart des machines : NetworkManager-wait-online, qui attend une connexion réseau au boot. Souvent désactivable si la machine n'a pas besoin du réseau au démarrage : systemctl disable NetworkManager-wait-online.service.
$ systemd-analyze critical-chain
Affiche une chaîne de dépendances ordonnées avec leurs temps d’activation, pour la cible par défaut ou celle indiquée. Les services parallèles, activations par socket et certains temps non mesurés limitent cette vue ; elle ne constitue pas une mesure complète de tout ce qui retarde le démarrage.
$ systemd-analyze verify /etc/systemd/system/myapp.service
Lint d'un fichier d'unité. Détecte les sections inconnues, les directives obsolètes, les dépendances cassées — à lancer avant systemctl daemon-reload, ça évite un service en échec silencieux.

Voir aussi : systemctl journalctl

localectl

Locale système, clavier console et clavier X11

Pendant systemd pour la locale (langue, encodage, formats date/nombre) et la disposition clavier. Sans argument, affiche le statut actuel — équivalent à lire /etc/locale.conf et /etc/vconsole.conf à la main.

Sous-commandes principales

statusÉtat actuel (par défaut sans argument).
list-localesLocales disponibles sur le système (générées via locale-gen sur Debian/Ubuntu).
set-locale LANG=fr_FR.UTF-8Définit la locale par défaut (modifie /etc/locale.conf).
list-keymapsListe les keymaps de la console TTY.
set-keymap fr-bepoChange le clavier de la console TTY (avant X/Wayland).
set-x11-keymap fr "" bepoDéfinit la disposition système X11 : LAYOUT [MODEL [VARIANT [OPTIONS]]]. Le modèle vide conserve la place de l’argument VARIANT. Les sessions graphiques peuvent appliquer leurs propres réglages, notamment sous Wayland.
$ localectl
System Locale: LANG=fr_FR.UTF-8
    VC Keymap: fr
   X11 Layout: fr
  X11 Variant: bepo
System Locale = la locale héritée par tous les services. VC Keymap = clavier de la console TTY (Ctrl+Alt+F1). X11 Layout/Variant = clavier de l'environnement graphique.
# localectl set-locale LANG=fr_FR.UTF-8 LC_TIME=en_US.UTF-8
Définit LANG et LC_TIME pour les processus qui hériteront de la configuration système. Les services et sessions déjà lancés peuvent conserver leur environnement et nécessiter un redémarrage. Cela ne garantit pas à lui seul un format uniforme pour tous les logs.
$ localectl list-locales | grep -i fr_
fr_BE.UTF-8
fr_CA.UTF-8
fr_FR.UTF-8
...
Trouver le code exact d'une locale. Sur Debian/Ubuntu, si une locale manque dans cette liste, l'activer via dpkg-reconfigure locales ou éditer /etc/locale.gen puis locale-gen.
Différence avec <code>locale</code> : la commande locale (sans -ctl) affiche les variables d'environnement de la session courante (qui peuvent venir du shell, de SSH, etc.). localectl agit sur la configuration système, lue par les services systemd.

Voir aussi : timedatectl date

loginctl

Sessions utilisateur et seats (systemd-logind)

Interface à systemd-logind, le démon qui gère les sessions utilisateurs (login console, SSH, GDM…). Permet de lister les sessions actives, terminer proprement la session de quelqu'un, ou activer linger (services utilisateur qui survivent à la déconnexion).

Sous-commandes utiles

list-sessionsToutes les sessions actives (ID, utilisateur, seat, TTY).
session-status [ID]Détails d'une session, dont les processus rattachés.
list-usersUtilisateurs actuellement suivis par logind, notamment via leurs sessions ou un gestionnaire utilisateur persistant ; ce n’est pas un historique de toutes les connexions du démarrage.
terminate-session IDTermine une session (équivalent SIGTERM puis SIGKILL aux processus).
terminate-user USERTermine toutes les sessions d'un utilisateur.
enable-linger USERPermet aux services utilisateur de l'utilisateur de tourner même après déconnexion.
$ loginctl list-sessions
SESSION  UID USER  SEAT  TTY
      2 1000 alice seat0 tty7
      5 1001 bob   -     pts/0
2 sessions listed.
seat0 / tty7 = session graphique locale. SEAT vide + pts/0 = session SSH ou terminal détaché. Permet d'identifier qui est connecté et par quel canal.
$ loginctl session-status 2 | head -10
Liste l'arbre de processus rattachés à la session : utile pour comprendre pourquoi une session refuse de se fermer (un screen/tmux qui traîne ?).
# loginctl enable-linger alice
Active linger pour alice : ses services systemctl --user tournent même quand elle n'est pas connectée. Indispensable pour faire tourner un service utilisateur (ex. un bot Discord) sans devoir maintenir une session ouverte.

Voir aussi : who systemctl ssh

coredumpctl

Inspecter les dumps de crash collectés par systemd

systemd-coredump intercepte les crashs (SIGSEGV, SIGABRT, etc.) et stocke les dumps compressés dans /var/lib/systemd/coredump/. coredumpctl est l'outil pour les lister et les rejouer dans un débogueur. Remplace l'approche historique des fichiers core dans le répertoire courant.

Sous-commandes

listListe les dumps disponibles (par défaut sans argument).
info [PID|EXE|MATCH]Détails d'un dump (signal reçu, stack trace résumée, exécutable…).
debug [PID|EXE]Lance gdb sur le dump et le binaire, prêt à inspecter.
dump > FICHIERExtrait le dump brut vers un fichier (pour analyse hors-ligne).
$ coredumpctl list
TIME                  PID UID GID SIG     COREFILE EXE
Fri 2026-05-15 12:13   8421 1000 1000 SIGSEGV present  /usr/bin/myapp
Fri 2026-05-15 14:02   9217 1000 1000 SIGABRT present  /usr/bin/myapp
Vue d'ensemble. SIG indique pourquoi le programme est mort : SIGSEGV = accès mémoire invalide, SIGABRT = abort() volontaire (souvent assertion en C++).
$ coredumpctl info /usr/bin/myapp
Le plus récent dump pour ce binaire, avec stack trace résumée. Suffisant pour repérer rapidement où ça plante quand le binaire a ses symboles de debug installés.
$ coredumpctl debug /usr/bin/myapp
Ouvre gdb directement sur le dump. bt dans gdb donne le backtrace complet, frame N bascule sur un frame précis, p variable inspecte. Pour un binaire compilé sans symbôles, installer le paquet -dbg ou -dbgsym correspondant améliore drastiquement la lisibilité.
Activer les dumps : La collecte dépend de kernel.core_pattern, de systemd-coredump et de sa configuration, ainsi que des limites du processus. ulimit -c concerne le shell courant et ses futurs enfants ; pour un service systemd, vérifier aussi LimitCORE=. Ne pas supposer que systemd-coredump ignore une limite nulle. La disponibilité des dumps et leur conservation peuvent également être limitées par coredump.conf.

Voir aussi : journalctl dmesg kill

Informations système

Identifier le noyau, la charge, la mémoire, les disques.

uname

Informations sur le noyau

Options

-aTout afficher (le plus utile).
-rVersion du noyau seulement.
-mArchitecture (x86_64, aarch64…).
-nNom de la machine.
$ uname -a
Linux dev-laptop 6.5.0-21-generic #21-Ubuntu SMP x86_64 GNU/Linux
$ case "$(uname -m)" in
    x86_64)  ARCH=amd64 ;;
    aarch64) ARCH=arm64 ;;
    armv7l)  ARCH=armhf ;;
    *)       echo "arch non supportee" >&2; exit 1 ;;
esac
wget "https://example.test/binary-${ARCH}.tar.gz"
Pattern d'installation portable : le script télécharge le binaire correspondant à l'architecture détectée. Indispensable pour des scripts qui doivent tourner indifféremment sur Raspberry Pi (armv7l), serveurs ARM ou Mac M1 en VM (aarch64), ou Intel/AMD classique (x86_64).

dmesg

Messages du noyau (ring buffer)

Affiche le kernel ring buffer : ce que le noyau écrit pour parler de matériel, drivers, montages, anomalies. Premier réflexe quand on branche un périphérique non reconnu, qu'un disque disparaît, ou qu'une VM se comporte bizarrement. Sur les distros modernes, équivalent à journalctl -k.

Options utiles

-TDates lisibles calculées à partir des temps relatifs au démarrage ; la valeur par défaut n’est pas un timestamp Unix. Les conversions peuvent être inexactes après suspend/resume.
-wWait : suit en temps réel (équivalent tail -f).
-l LEVELFiltre par niveau : err, warn, info, debug… (combinables avec virgule).
-HMode pager humain (couleur, pagination automatique).
-cVide le buffer après lecture (root).
$ dmesg -T | tail -30
Les 30 dernières lignes du kernel buffer avec dates lisibles. Réflexe immédiat quand on vient de brancher quelque chose ou quand un disque râle.
$ dmesg -T | grep -i usb
[lun. mai  6 14:32:11 2026] usb 3-1: new high-speed USB device number 7
[lun. mai  6 14:32:11 2026] usb 3-1: Product: USB Storage
[lun. mai  6 14:32:11 2026] sd 7:0:0:0: [sdc] 15728640 512-byte blocks (8.05 GB)
Montre les messages contenant usb. Le nom d’un disque ou d’une partition peut apparaître sur une autre ligne ; confirmer le périphérique avec lsblk avant tout montage ou opération de stockage.
$ dmesg -l err,warn -T
Uniquement les erreurs et warnings — filtre du bruit pour repérer rapidement un problème matériel (mémoire, disque, contrôleur).
dmesg ou journalctl -k ? Les deux affichent les messages noyau. journalctl -k bénéficie des filtres --since / -p et de l'historique persistant ; dmesg est plus rapide à taper et survit même si journald est éteint. Sur une distro systemd moderne, les deux sont disponibles.

Voir aussi : journalctl lsblk mount

sysctl

Lire et modifier les paramètres du noyau à chaud

sysctl est le miroir en commande de /proc/sys/ : chaque clé pointée (net.ipv4.ip_forward) correspond à un fichier (/proc/sys/net/ipv4/ip_forward) que le noyau lit et écrit en temps réel. Avantage : pas besoin de redémarrer pour changer un paramètre. Inconvénient : le changement disparaît au reboot, sauf s'il est persisté dans /etc/sysctl.d/*.conf.

Options principales

-aAffiche tous les paramètres (plusieurs milliers).
-nAffiche seulement la valeur, sans la clé (utile en script).
-w cle=valÉcrit une nouvelle valeur (équivalent à echo val > /proc/sys/cle).
-p [FICHIER]Recharge depuis /etc/sysctl.conf (ou un fichier précis).
--systemApplique tous les fichiers /etc/sysctl.d/*.conf + variants /usr/lib/, /run/. Équivalent à ce qui se passe au boot.
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
Lit un paramètre. 0 = la machine ne fait pas de routage IP. Indispensable de vérifier avant d'essayer de monter un VPN ou un NAT.
# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
Active le routage IP tout de suite. Non persistant : un reboot rétablit la valeur par défaut. Pour persister, créer un fichier dans /etc/sysctl.d/.
$ sysctl -a 2>/dev/null | grep -i somaxconn
net.core.somaxconn = 4096
Trouver un paramètre quand on ne connaît pas son chemin exact. somaxconn = file d'attente des sockets en écoute — paramètre classique à augmenter pour les serveurs sous charge. Le 2>/dev/null masque les warnings sur les paramètres restreints à root.
# cat > /etc/sysctl.d/99-vpn.conf <<EOF
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
EOF
sysctl --system
Applique les réglages persistants lus par procps sysctl --system. Les répertoires sysctl.d sont traités avec leurs priorités ; procps peut aussi lire /etc/sysctl.conf. systemd-sysctl lit sysctl.d et ne lit pas directement /etc/sysctl.conf, sauf si la distribution l’intègre par un lien ou un autre mécanisme.
Familles de clés à connaître : kernel.* (comportement du noyau, kernel.panic, kernel.pid_max), vm.* (mémoire virtuelle, vm.swappiness), net.ipv4.* / net.ipv6.* (pile réseau), fs.* (limites filesystem, fs.file-max).

Voir aussi : lsmod /proc journalctl

lsmod · modprobe · rmmod · modinfo

Modules du noyau : lister, charger, décharger, inspecter

Le noyau Linux est modulaire : les pilotes (carte réseau, son, FS exotiques…) sont chargeables à la demande, sans recompiler. Ces quatre commandes en forment l'interface utilisateur — lsmod pour voir, modprobe pour charger (avec dépendances), rmmod pour décharger, modinfo pour inspecter.

Commandes courantes

lsmodListe les modules chargés (nom, taille, nombre d'utilisateurs).
modprobe MODCharge MOD et toutes ses dépendances.
modprobe -r MODDécharge MOD (s'il n'est plus utilisé).
rmmod MODDécharge directement (sans toucher aux dépendances).
modinfo MODMétadonnées : version, auteur, options acceptées, chemin du fichier .ko.
$ lsmod | head -5
Module                  Size  Used by
nf_conntrack          172032  4 nf_nat,xt_conntrack,xt_state,iptable_nat
br_netfilter           32768  0
overlay               147456  18
...
Used by liste les modules qui dépendent de celui-ci. Pour décharger un module, il faut d'abord décharger ceux listés ici — sinon rmmod refuse.
$ modinfo bluetooth | head -8
Pratique pour savoir d'où vient un pilote (paquet upstream, signature), quelles options il accepte (parm:), et quelle version. Sur un module dont la version diverge du noyau, on tombe sur vermagic incompatible.
# modprobe nf_conntrack
Charge le module et toutes ses dépendances. modprobe consulte /lib/modules/$(uname -r)/modules.dep, généré par depmod à l'installation du noyau.
# # Empêcher le chargement automatique d'un module
echo "blacklist nouveau" > /etc/modprobe.d/blacklist-nouveau.conf
update-initramfs -u   # Debian/Ubuntu
Bloquer un pilote au boot — classique pour le pilote libre nouveau quand on installe les pilotes NVIDIA propriétaires. La régénération de l'initramfs est nécessaire si le module est chargé tôt dans le boot.
Charger un module au boot : créer un fichier dans /etc/modules-load.d/ contenant un nom de module par ligne. Géré par systemd-modules-load.service au démarrage. Plus propre que d'éditer /etc/modules qui est un mécanisme legacy.

Voir aussi : sysctl dmesg lspci

who · w · last

Qui est connecté maintenant, qui s'est connecté avant

Trois commandes complémentaires : who donne la liste basique des sessions actives, w ajoute la charge système et ce que chaque utilisateur est en train de faire, last remonte dans /var/log/wtmp pour montrer l'historique. Premiers réflexes en sécurité ou avant un reboot.

$ who
alice    pts/0        2026-05-07 09:14 (192.168.1.42)
bob      pts/1        2026-05-07 10:32 (192.168.1.55)
Liste minimale : utilisateur, terminal, heure de connexion, origine. Utile avant un shutdown pour prévenir les autres sessions.
$ w
 11:42:01 up 3 days,  4:18,  2 users,  load average: 0.45, 0.62, 0.71
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
alice    pts/0    192.168.1.42     09:14    0.00s  0.42s  0.01s vim config.yml
bob      pts/1    192.168.1.55     10:32    1:12   0.18s  0.15s -bash
Vue plus riche : uptime intégré, load average, et la colonne WHAT montre la commande active de chaque session. Très utile pour repérer un utilisateur qui consomme du CPU.
$ last -n 10
Les 10 dernières sessions. Sans argument, last remonte loin (potentiellement plusieurs mois). Utile en sécu pour repérer une session inattendue, ou pour confirmer qu'un utilisateur a bien été déconnecté lors d'un reboot.
$ lastb -n 10
Affiche les dernières tentatives échouées enregistrées dans btmp, si ce journal et l’outil sont disponibles ; les droits root sont généralement nécessaires. L’enregistrement dépend de PAM et des services utilisés : compléter avec leurs journaux.

Voir aussi : uptime id whoami

uptime

Depuis combien de temps la machine tourne, et sa charge

$ uptime
 14:32:11 up 12 days,  3:42,  2 users,  load average: 0,42, 0,38, 0,35

Les charges sur 1, 5 et 15 minutes comptent les tâches exécutables et celles en attente non interruptible, notamment d’entrées-sorties. Les comparer au nombre de CPU logiques donne un indice, mais une charge de 4 sur 4 CPU ne prouve pas à elle seule une saturation CPU. Croiser avec vmstat, les temps CPU et les latences I/O.

date

Afficher ou définir la date et l'heure

$ date
dim. 12 mai 2024 14:32:11 CEST
$ date '+%Y-%m-%d %H:%M:%S'
2024-05-12 14:32:11
Format ISO, parfait pour des noms de fichiers triables.
$ date +%F
2024-05-12
%F est un raccourci pour %Y-%m-%d.
$ date -d "next monday"
Calcul de date relative.
$ date -u
Heure UTC.
$ tar -czf "backup-$(date +%F).tar.gz" /chemin/a/sauvegarder/
Crée une archive datée, par exemple backup-2026-10-26.tar.gz.

free

Utilisation de la mémoire

$ free -h
              total       util.   libre  partagé tampons    dispo
Mem.:          15Gi      6,2Gi   1,8Gi   543Mi   7,2Gi    8,1Gi
Échange:      2,0Gi        0B    2,0Gi

La colonne dispo est la plus parlante : c'est la mémoire que le noyau peut récupérer rapidement (libre + caches non critiques). Une machine où libre est faible mais dispo élevé n'est pas saturée.

$ free -h -s 2
Rafraîchit toutes les 2 secondes. Pratique pour observer en direct l'effet d'une commande lourde sur la RAM (build, test de charge), Ctrl+C pour arrêter.
$ free -m | awk 'NR==2 {printf "%.0f%%\n", $3/$2*100}'
42%
Pourcentage de mémoire utilisée pour un script de monitoring : NR==2 cible la ligne Mem., $3/$2 = utilisé/total. Bon point d'entrée pour un check Nagios/Zabbix maison ou un alerting basique avec seuil.

lsblk

Lister les périphériques bloc (disques, partitions)

$ lsblk
NAME        SIZE TYPE MOUNTPOINTS
nvme0n1     476G disk
├─nvme0n1p1 512M part /boot/efi
└─nvme0n1p2 476G part /
sda         3,7T disk
└─sda1      3,7T part /mnt/data
$ lsblk -f
Avec -f, ajoute UUID et type de système de fichiers (ext4, xfs, btrfs…).
$ lsblk -o NAME,SIZE,FSTYPE,UUID,MOUNTPOINT
Format custom avec les colonnes choisies. Pratique avant d'ajouter une ligne au fstab : on a directement le UUID à coller, sans avoir à lancer blkid séparément.
$ lsblk -J -o NAME,PATH,TYPE,FSTYPE,UUID,MOUNTPOINTS | jq '.blockdevices[] | select(.children == null and .type == "disk")'
Liste les disques sans enfants affichés, avec leurs informations de système de fichiers et de montage. Un tel disque peut déjà contenir un système de fichiers et des données, même sans partitions : ce filtre ne prouve pas qu'il est vierge. Avant toute initialisation, contrôler son identité, ses montages et ses signatures avec lsblk -f et wipefs -n /dev/… (lecture seule). L'absence de signature ne garantit pas l'absence de données importantes.

lscpu · lspci · lsusb

Inventaire matériel : CPU, périphériques PCI, périphériques USB

Trois commandes ls* pour découvrir ce qu'il y a réellement dans la machine. Pas besoin de root pour les usages basiques. Utiles avant un build (architecture cible), un audit (qui est branché ?) ou un debug matériel.

$ lscpu
Architecture:            x86_64
CPU(s):                  16
Thread(s) per core:      2
Core(s) per socket:      8
Socket(s):               1
Model name:              AMD Ryzen 7 5800X
CPU MHz:                 3800.000
L1d cache:               256 KiB
L2 cache:                4 MiB
L3 cache:                32 MiB
CPU détaillé. Le combo Thread(s) per core × Core(s) per socket × Socket(s) donne le total de threads logiques. Indispensable pour dimensionner make -j ou un thread pool.
$ lspci | grep -i vga
01:00.0 VGA compatible controller: NVIDIA Corporation GA106 [GeForce RTX 3060]
Identifie les contrôleurs graphiques VGA. Certains GPU sont classés 3D ou Display ; pour élargir : lspci | grep -Ei "vga|3d|display". Utiliser lspci -k pour afficher le pilote noyau en cours d’utilisation.
$ lsusb
Bus 003 Device 007: ID 0781:5567 SanDisk Corp. Cruzer Blade
Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
Tous les périphériques USB connectés avec leur identifiant vendor:product. Le combiner avec dmesg | grep -i usb pour voir comment le noyau les a vus au branchement.
Tableau de bord global : lshw (paquet à installer) regroupe CPU + mémoire + stockage + réseau + USB en une seule sortie hiérarchique. hwinfo sur openSUSE fait pareil. inxi donne un aperçu très lisible et coloré.

Voir aussi : uname dmesg lsblk

vmstat · iostat

Statistiques de performance en temps réel (CPU, mémoire, I/O)

Deux outils complémentaires pour comprendre d'où vient la lenteur d'un système. vmstat donne une vue synthétique CPU + mémoire + swap + I/O par tranche de temps, iostat (paquet sysstat) descend par périphérique de stockage. Tous deux acceptent intervalle [count] pour un mode rafraîchi.

$ vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 234728  68512 7812420    0    0    18    32  142  240  3  1 96  0  0
 2  0      0 234608  68512 7812420    0    0     0    20  892 1503 12  3 85  0  0
Affiche cinq rapports : les compteurs du premier sont des moyennes depuis le démarrage, les suivants couvrent des intervalles de deux secondes. r compte les tâches exécutables, si/so les transferts swap, wa le temps CPU en attente d’I/O. Une valeur isolée ne suffit pas à conclure à une saturation.
$ iostat -xz 2
Device  r/s    w/s    rkB/s   wkB/s   await  %util
sda     12.30  4.50   480.20  120.40  3.21   18.50
nvme0n1 145.10 78.90  6240.00  3120.40 0.42   95.20
Affiche les statistiques par périphérique. Le premier rapport résume depuis le démarrage, les suivants couvrent deux secondes. %util proche de 100 indique une activité continue mais pas forcément la saturation d’un SSD/NVMe ou RAID parallèle ; croiser avec latence, files et débit. -x ajoute les compteurs étendus et -z masque les périphériques inactifs.
Compagnons : mpstat -P ALL 1 détaille la charge par CPU (paquet sysstat), sar (idem) collecte des historiques à long terme, dstat et glances proposent des vues synthétiques en temps réel.

Voir aussi : free uptime top htop

Stockage

Partitionner un disque, créer un système de fichiers, le vérifier, l'attacher et le détacher d'un point de montage. La configuration permanente des montages au démarrage se fait dans /etc/fstab.

mount

Attacher un système de fichiers à un point de l'arborescence

Sans argument, mount affiche tous les montages actuels. Avec deux arguments, il attache un device à un point de montage. Avec un seul, il consulte /etc/fstab pour deviner les options. Nécessite généralement les privilèges root.

Syntaxe

mount                                          # liste tous les montages
mount /dev/sdb1 /mnt/usb                       # attache un device a un repertoire
mount -t ext4 /dev/sdb1 /mnt/usb               # type de FS explicite
mount -o ro /dev/sdb1 /mnt/usb                 # options : ro, rw, noexec, nosuid...
mount -o loop image.iso /mnt/iso               # attacher un fichier image

Options courantes

-t TYPEType de système de fichiers : ext4, xfs, btrfs, vfat, ntfs, iso9660… Défaut : auto-détection.
-o OPTSListe d'options séparées par virgules. Voir tableau ci-dessous.
-aMonte tout ce qui figure dans /etc/fstab avec l'option auto. Souvent utilisé après une modification du fstab.
-r / -wRaccourcis pour -o ro (lecture seule) et -o rw (lecture-écriture).

Options de montage fréquentes (-o ...)

ro / rwLecture seule / lecture-écriture (défaut rw).
noexecEmpêche l'exécution de binaires depuis ce FS — utile pour les FS utilisateurs ou exposés.
nosuidIgnore les bits SUID/SGID. Sécurité minimale pour les supports amovibles.
loopMonte un fichier (image disque ISO, conteneur) comme s'il s'agissait d'un device.
remountRemonter un FS déjà monté avec d'autres options : mount -o remount,ro /.
# mount /dev/sdb1 /mnt/usb
Monte la première partition d'une clé USB sur /mnt/usb. Le répertoire de montage doit déjà exister (mkdir /mnt/usb au préalable). Nécessite root.
# mount -o loop ubuntu-24.04.iso /mnt/iso
Monte une image ISO comme un disque virtuel. Pratique pour explorer le contenu sans avoir à graver, ou pour faire un build chroot.
# mount -o remount,ro /
Remonte la racine en lecture seule sans redémarrer. Cela peut limiter les écritures pendant un diagnostic ; cela ne rend pas fsck sûr sur un système de fichiers monté. Pour réparer la racine, démarrer depuis un environnement de secours et vérifier le volume démonté.

Cas concret : monter un disque physique de façon persistante

Syntaxe

# Identifier la partition et son UUID (exemple à adapter)
lsblk -f
sudo blkid /dev/sdb1
sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data
# Ajouter manuellement l’entrée UUID réelle dans /etc/fstab
sudoedit /etc/fstab
sudo systemctl daemon-reload
sudo findmnt --verify
# Après validation, tester le montage de ce point uniquement
sudo umount /mnt/data
sudo mount /mnt/data

Procédure complète : repérer le disque avec lsblk -f, récupérer son UUID via blkid, le monter une fois pour vérifier, puis ajouter une ligne au /etc/fstab pour qu'il soit monté automatiquement à chaque démarrage. Toujours référencer par UUID et non par /dev/sdX qui peut changer entre reboots (selon l'ordre de détection des disques). mount -a teste la nouvelle ligne sans rebooter — si elle plante ici, on corrige avant le prochain boot, sinon le système refuse de démarrer.

Sur un hôte Proxmox VE Dans Proxmox VE, les commandes qm et pct configurent respectivement les VM et les conteneurs LXC côté hyperviseur ; ce ne sont pas des commandes KVM/LXC universelles. Exemple VM : qm set <vmid> -scsi1 /dev/disk/by-id/…. Exemple LXC : pct set <ctid> -mp0 /mnt/host_data,mp=/mnt/data. Vérifier que le périphérique ou le chemin est dédié à cet usage et adapter les droits, notamment pour un conteneur non privilégié.

Voir aussi : umount lsblk /etc/fstab

umount

Détacher un système de fichiers

L'inverse de mount. À toujours faire avant de débrancher physiquement un support amovible, sinon des écritures peuvent rester en cache et corrompre le FS. Échoue avec « target is busy » si un processus a un descripteur ouvert dessus.

Syntaxe

umount /mnt/usb               # par point de montage
umount /dev/sdb1              # par peripherique
umount -l /mnt/usb            # detache maintenant, libere apres les dernieres references
umount -f /mnt/usb            # surtout pour certains montages reseau inaccessibles

Options

-lDétache immédiatement le montage de l’espace de noms, puis libère les références restantes lorsqu’elles ne sont plus utilisées. Ne garantit pas la fin des écritures et ne prépare pas un support à être débranché.
-fForcer. Utile principalement pour des montages réseau (NFS) inaccessibles.
-aDémonte tous les FS listés dans /etc/mtab.
# umount /mnt/usb
umount: /mnt/usb: target is busy.
Erreur classique. Pour identifier le coupable : lsof +f -- /mnt/usb ou fuser -mv /mnt/usb listent les processus qui ont ouvert quelque chose sur ce FS. On peut alors les fermer ou les tuer, puis réessayer.
# umount -l /mnt/usb
Démontage paresseux : le FS disparaît immédiatement de l'arborescence visible, mais reste actif tant qu'un processus tient un fichier ouvert. À réserver aux cas particuliers (par exemple un montage réseau inaccessible) ; ne pas l'utiliser pour contourner un démontage occupé avant de débrancher un support.

Voir aussi : mount lsblk /etc/fstab

swapon · swapoff

Activer ou désactiver une zone de swap

Le swap permet au noyau de décharger sur disque des pages mémoire inutilisées, pour libérer de la RAM. swapon active une zone (partition dédiée ou fichier), swapoff la désactive. Sur les installations modernes, beaucoup utilisent un swapfile plutôt qu'une partition — plus facile à redimensionner.

Options

--showListe les zones de swap actives (équivalent à cat /proc/swaps).
-aActive toutes les entrées swap de /etc/fstab.
-p NPriorité (0–32767). Plus haut = préféré. Utile quand on a plusieurs zones.
$ swapon --show
NAME      TYPE       SIZE USED PRIO
/swapfile file         4G   0B   -2
Affiche les zones actives et leur occupation actuelle. USED à 0B signifie qu’aucun espace n’est utilisé maintenant, pas que la machine n’a jamais swappé. Une occupation durable peut subsister après une ancienne pression mémoire ; examiner aussi les échanges si/so de vmstat et la mémoire disponible.
$ free -h | grep -i swap
Swap:           4.0Gi          0B       4.0Gi
Vue alternative depuis free. Plus utile que swapon --show quand on veut aussi voir l'usage de la RAM dans la foulée.
# # Creer un swapfile de 4 Go
fallocate -l 4G /swapfile  # vérifier la prise en charge par le FS
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
Recette pour ajouter du swap sans redémarrer, sur un système de fichiers qui prend en charge les fichiers préalloués comme swap. Sur Btrfs, cette méthode ne convient pas : suivre la procédure dédiée de la distribution (notamment désactiver le copy-on-write pour le fichier). Le chmod 600 protège le contenu, mkswap écrit l'en-tête et swapon active le fichier. Pour persister au boot, ajouter à /etc/fstab : /swapfile none swap sw 0 0.
# swapoff /swapfile && swapon /swapfile
Réinitialiser le swap (le "vider" en forçant les pages à revenir en RAM). Utile pour libérer un swap qui s'est rempli avant un usage intensif — à condition qu'il y ait assez de RAM libre pour absorber le rapatriement, sinon swapoff peut échouer faute de mémoire disponible.
vm.swappiness : vm.swappiness est un réglage de coût relatif entre pagination des fichiers et swap, de 0 à 200 sur les noyaux Linux actuels. La valeur par défaut du noyau est 60, mais les distributions peuvent la changer. Avec zram/zswap, une valeur supérieure à 100 peut être adaptée ; choisir selon la charge et mesurer plutôt que recommander systématiquement 10. Zéro ne désactive pas le swap.

Voir aussi : free sysctl mount

fdisk · parted · gdisk

Créer, supprimer, redimensionner des partitions

Trois outils pour la même tâche : éditer la table des partitions d'un disque. fdisk est l'outil historique, longtemps réservé au MBR mais qui gère désormais aussi GPT. gdisk est dédié à GPT (disques > 2 To, > 4 partitions primaires). parted (et son frontend gparted) accepte les deux et expose une syntaxe scriptable.

Sous-commandes fdisk (interactif)

pPrint : affiche la table actuelle.
nNew : crée une nouvelle partition (numéro, début, fin).
dDelete : supprime une partition.
tChange le type d’une partition. Les codes 83, 82 et 8e concernent les tables DOS/MBR ; GPT utilise d’autres identifiants et un menu adapté.
wWrite : écrit les changements et quitte. Rien n'est sauvegardé avant.
qQuit : sort sans rien écrire (en cas de boulette).
# fdisk -l /dev/sda
Disk /dev/sda: 500 GB, ...
Device     Start      End  Sectors  Size Type
/dev/sda1   2048   999423  997376  487M EFI System
/dev/sda2 999424 999898111 ...     476G Linux filesystem
Affiche la table sans entrer en mode interactif. Toujours commencer par là avant de modifier — pour bien voir sur quel disque on s'apprête à travailler. Confondre /dev/sda avec /dev/sdb est l'erreur la plus coûteuse en partitionnement.
# fdisk /dev/sdb
Ouvre l’éditeur interactif. La suite de questions après n dépend du type de table, de l’espace disponible et de la version : lire les invites, vérifier avec p et n’écrire avec w qu’après confirmation de la table souhaitée. q abandonne les changements non enregistrés.
# parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart donnees ext4 1MiB 100%
parted /dev/sdb print
Même opération en non-interactif avec parted. mklabel gpt initialise une table GPT (efface tout !), mkpart crée la partition de 1 Mio à la fin du disque. Scriptable, contrairement au fdisk interactif.
# partprobe /dev/sdb
Demande au noyau de relire la table après modification. Ne modifiez pas la table de partitions d'un disque dont une partition est montée : démontez-la d'abord. La relecture peut échouer si le périphérique est occupé.
Première règle du partitionnement : vérifier trois fois le nom du disque cible. lsblk avant de toucher fdisk. Une opération w sur la mauvaise unité détruit les données présentes sans confirmation supplémentaire — il n'y a pas d'annulation.

Voir aussi : lsblk mkfs blkid

mkfs

Créer un système de fichiers sur une partition

mkfs est en fait une famille : mkfs.ext4, mkfs.xfs, mkfs.btrfs, mkfs.vfat… La forme générique mkfs -t TYPE dispatche vers le bon binaire. Initialise les structures sur une partition (inodes, tables, journal selon le FS) — au prix d'effacer toute donnée existante.

Systèmes de fichiers courants

ext4Le défaut sur la plupart des distros. Mature, journalisé, performances équilibrées.
xfsDéfaut sur RHEL/CentOS. Excellent sur gros volumes et fichiers volumineux.
btrfsSnapshots natifs, compression transparente. Défaut sur Fedora Workstation depuis 33.
vfat / exfatFAT32 permet des volumes de plus de 32 Go selon les outils et lecteurs, mais limite chaque fichier à moins de 4 Gio. exFAT convient notamment aux gros fichiers ; vérifier la compatibilité des appareils.
swapPas un vrai FS — voir mkswap.
# mkfs.ext4 -L donnees /dev/sdb1
Creating filesystem with 122064896 4k blocks and 30523392 inodes
Filesystem UUID: 7c3e8f2a-1234-...
...
Formate /dev/sdb1 en ext4 avec le label donnees. Le label se voit avec lsblk -f et permet de monter via LABEL=donnees dans fstab (plus stable que /dev/sdb1 qui peut bouger entre deux boots).
# mkfs.xfs -L data /dev/sdc1
XFS sur une partition. Pratiquement aucune option à connaître pour un usage courant — XFS est self-tuning, contrairement à ext4 où certains défauts (-m reserved blocks) gagnent à être ajustés sur les gros disques.
# mkfs.vfat -F 32 -n USB /dev/sdc1
Formater une clé USB en FAT32 pour qu'elle soit lisible partout (Windows, macOS, Linux, autoradios…). -F 32 force FAT32 (par défaut mkfs.vfat choisit FAT12/16/32 selon la taille).
Effacement irréversible : Les outils mkfs créent les structures d’un système de fichiers et peuvent détruire l’accès aux données précédentes. Les confirmations et refus dépendent de l’outil et du contexte : ne pas s’y fier comme protection. Sur ext4, les 5 % souvent cités sont une réserve de blocs, pas une proportion fixe de blocs écrasés lors du formatage.

Voir aussi : fdisk fsck mount lsblk

fsck · e2fsck · xfs_repair

Vérifier et réparer un système de fichiers

Vérifie l'intégrité d'un FS et corrige les incohérences. fsck est le wrapper générique qui appelle fsck.ext4 (=e2fsck), fsck.xfs (=xfs_repair), etc. selon le type. Tourne automatiquement au boot après un n-ième mount ou après une coupure brutale.

Options principales

-nPour e2fsck : ouvre en lecture seule et répond non aux réparations. Les options après fsck sont transmises au vérificateur du format ; elles ne sont pas universelles. fsck -N affiche les opérations prévues sans lancer de vérificateur.
-yYes : répond oui à toutes les questions. À réserver à un FS sans valeur ou un script.
-fForce : vérifie même si le FS est marqué clean.
-AVérifie les systèmes de fichiers éligibles de /etc/fstab selon leur champ pass. Un démarrage sous systemd utilise ses propres unités fsck ; ce n’est pas nécessairement un unique fsck -A.
-CAffiche une barre de progression (utile sur les gros volumes).
# fsck -n /dev/sdb1
fsck from util-linux 2.38
e2fsck 1.46.5 (30-Dec-2021)
/dev/sdb1: clean, 423/30523392 files, 1986544/122064896 blocks
Pour ext2/3/4, demande au vérificateur de ne pas modifier le volume. Le volume doit être démonté pour un résultat fiable. fsck délègue à un outil propre au système de fichiers : vérifier ses options ; -n n’est pas une simulation universelle pour tous les formats.
# fsck -f /dev/sdb1
Force une vérification complète. Pour un volume ext4, vérifier les prérequis de la procédure de redimensionnement : un contrôle hors ligne peut être nécessaire, notamment avant une réduction. Le système de fichiers doit être démonté ; ne lancez pas fsck sur un volume monté.
# xfs_repair /dev/sdc1
Sur XFS, on n'utilise pas fsck.xfs (qui ne fait rien d'autre que renvoyer 0) — c'est xfs_repair qui répare. Cohérence historique XFS : la corruption se répare hors-ligne avec un outil dédié, pas pendant le boot.
FS monté = pas de fsck : Démonter le système de fichiers avant de le vérifier ou le réparer. Pour la racine, démarrer depuis un système de secours distinct (live/rescue) et vérifier que le volume n’est pas monté. systemctl rescue conserve normalement des montages, et init=/bin/bash ne garantit pas non plus une racine démontée. Les résultats d’un contrôle sur un volume monté peuvent être incohérents, même en lecture seule.

Voir aussi : mkfs mount dmesg

blkid · findmnt

Inspecter les FS sans les monter, et inspecter les montages

Couple complémentaire : blkid liste les périphériques bloc (partitions) avec leur type de FS, leur UUID et leur label — sans avoir à les monter. findmnt liste les montages actifs en arbre, avec leurs options. Tous deux remplacent avantageusement les vieux réflexes (cat /proc/mounts, cat /etc/fstab | grep).

blkid

blkid (sans arg)Liste tous les blocs avec UUID/type/label.
blkid -U UUIDRenvoie le nœud (/dev/sdaX) correspondant à un UUID.
blkid -L LABELIdem par label.
blkid -o value -s UUID /dev/sda1Renvoie juste la valeur d'un champ (utile en script).
# blkid
/dev/sda1: UUID="ABCD-1234" TYPE="vfat" PARTUUID="..."
/dev/sda2: UUID="7c3e8f2a-1234-..." TYPE="ext4" LABEL="root" PARTUUID="..."
/dev/sdb1: UUID="9f1a-..."  TYPE="ext4" LABEL="donnees"
Vue d'ensemble. Les UUID sont ce qu'il faut copier dans /etc/fstab à la place de /dev/sdaX — l'UUID survit aux changements d'ordre des disques entre deux boots, le chemin /dev/sdb peut devenir /dev/sdc à la prochaine attache USB.
$ blkid -o value -s UUID /dev/sda2
7c3e8f2a-1234-...
Forme scriptable. Idiome typique pour générer une ligne fstab : echo "UUID=$(blkid -o value -s UUID /dev/sda2) / ext4 defaults 0 1" >> /etc/fstab.

findmnt

findmnt (sans arg)Arbre des montages actifs.
findmnt /pointDétails d'un montage précis.
findmnt -t TYPEFiltre par type de FS (ext4, nfs…).
findmnt --fstabLit /etc/fstab au lieu de l'état courant — pour vérifier ce qui devrait être monté au boot.
findmnt --verifyLint de /etc/fstab : détecte UUID inexistants, doublons, options incompatibles. Idéal avant un reboot.
$ findmnt
TARGET    SOURCE    FSTYPE  OPTIONS
/         /dev/sda2 ext4    rw,relatime
├─/boot   /dev/sda1 vfat    rw,relatime
├─/home   /dev/sdb1 ext4    rw,relatime
└─/tmp    tmpfs     tmpfs   rw,nosuid,nodev
Vue arborescente, lisible. OPTIONS permet de vérifier rapidement si un FS est en ro par erreur, ou si noexec/nosuid sont actifs.
# findmnt --verify
/etc/fstab:8: parse error: missing options
/etc/fstab:12: source UUID=xxxxx not found
Détecte les bombes à retardement dans /etc/fstab — celles qui ne se voient qu'au prochain reboot, quand la machine ne remonte plus et bascule en mode rescue. À lancer après chaque modification du fichier.

Voir aussi : lsblk mount fdisk /etc/fstab

pvcreate · vgcreate · lvcreate (LVM)

Volumes logiques : agréger des disques et redimensionner à chaud

LVM (Logical Volume Manager) insère une couche d'abstraction entre les disques et les systèmes de fichiers. Trois étages : les PV (physical volumes — disques ou partitions), regroupés en un VG (volume group — un pool d'espace), découpé en LV (logical volumes — les « partitions » souples qu'on formate et monte). L'intérêt décisif : agrandir un volume à chaud et répartir l'espace de plusieurs disques, sans la rigidité du partitionnement classique.

Syntaxe

Disques  ──>   PV   ──>   VG (pool)  ──>   LV   ──>  FS monté
/dev/sdb     pvcreate    vgcreate       lvcreate    mkfs + mount
# pvcreate /dev/sdb /dev/sdc
vgcreate data /dev/sdb /dev/sdc
lvcreate -L 20G -n web data
mkfs.ext4 /dev/data/web
mkdir -p /srv/web
mount /dev/data/web /srv/web
Initialisation destructive : utiliser uniquement des disques dédiés dont les données peuvent être perdues, après vérification de leur identité et de leur usage. Le pipeline complet de création (chaque ligne est une commande root). Le LV apparaît comme /dev/data/web (alias /dev/mapper/data-web) : à partir de là c'est un device-bloc comme un autre, on le formate et on le monte normalement, puis on l'ajoute à /etc/fstab par son chemin LVM, stable.
# lvextend -r -L +10G /dev/data/web
L'argument massue : agrandir un volume saturé sans rien démonter. -r (resizefs) enchaîne le redimensionnement du système de fichiers (resize2fs pour ext4, xfs_growfs pour XFS) — sans lui, le LV grandit mais le FS reste à sa taille. Si le VG est plein, on l'étend d'abord avec un nouveau disque : vgextend data /dev/sdd.

Inspection (s = summary)

pvs / pvdisplayListe les physical volumes (résumé / détaillé).
vgs / vgdisplayListe les volume groups et l'espace libre restant.
lvs / lvdisplayListe les logical volumes.
Snapshots : lvcreate -s -L 5G -n web-snap /dev/data/web crée un snapshot LVM classique. Il donne une image des blocs à un instant, pas automatiquement une sauvegarde cohérente d’une base active : appliquer la procédure de sauvegarde ou de mise en pause de l’application. Surveiller l’espace du snapshot (son remplissage peut l’invalider). La restauration par lvconvert --merge dépend de l’état d’activation du volume et peut être différée.

Voir aussi : mkfs mount lsblk fdisk

Services applicatifs

Quelques services essentiels qu'un administrateur de base croise tôt ou tard : le transfert d'e-mails (MTA) et l'impression. La configuration profonde sort du cadre de cette page, mais les commandes pour interroger et déboguer ces services sont à connaître.

mail · mailq · newaliases

Envoyer un mail, inspecter la file, gérer les alias

Sous Linux, un MTA (Mail Transfer Agent : postfix, sendmail, exim…) tourne souvent en local pour que les services système (cron, smartmontools, mdadm…) puissent envoyer des notifications par mail. Trois outils de base à connaître : mail pour composer/lire, mailq pour voir la file d'attente, newaliases pour recompiler la base d'alias après modification.

$ echo "Test" | mail -s "Sujet test" root
Envoi simple : -s = sujet, le destinataire en dernier argument. root = livraison locale (redirigée vers l'admin via les alias). Pour un destinataire externe, le MTA doit pouvoir router (relai SMTP configuré ou serveur local autorisé).
$ mail -s "Rapport" admin@example.test < rapport.txt
# Avec GNU Mailutils, -A joint un fichier (vérifier mail --help)
mail -s "Rapport" -A piece-jointe.pdf admin@example.test < rapport.txt
La syntaxe des pièces jointes dépend de l’implémentation : GNU Mailutils utilise -A ; s-nail utilise -a, qui signifie au contraire un en-tête dans GNU Mailutils. Identifier le programme réellement installé avant de choisir sa commande.
$ mailq
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
A3F2B19D    1234 Mon May 13 14:22:01  alice@example.test
                                          bob@distant.test
    (connect to mx.distant.test[1.2.3.4]:25: Connection timed out)

-- 1 Kbytes in 1 Requests.
Liste les mails en attente. Si la liste s'allonge, c'est qu'un MX est injoignable ou qu'un destinataire bounce. postqueue -f (sur Postfix) force une nouvelle tentative immédiate.
# echo "alice: alice@example.test" >> /etc/aliases
echo "root:  alice"               >> /etc/aliases
newaliases
Ajoute des alias locaux puis reconstruit la table avec newaliases si le MTA utilise une table compilée. Vérifier et éditer les entrées existantes au lieu d’ajouter des doublons ; le format de stockage (hash, lmdb, etc.) dépend de sa configuration. Les destinataires externes exigent une livraison SMTP fonctionnelle.
Tester sans envoyer : Avec Postfix, postalias -q alice /etc/aliases interroge la table d’alias. Le type et le chemin effectifs dépendent de alias_maps. Ce test cherche une entrée ; il ne vérifie pas à lui seul toute la chaîne de livraison.

Voir aussi : journalctl logger systemctl

lpr · lpq · lprm · lpstat

Impression : envoyer, lister, annuler, inspecter

Sur Linux, l'impression passe par CUPS (Common Unix Printing System). Les quatre commandes historiques restent l'interface CLI : envoyer un job (lpr), lister la file (lpq), annuler (lprm), inspecter l'état général (lpstat). L'administration profonde se fait via l'interface web http://localhost:631.

Commandes

lpr FICHIEREnvoie le fichier vers l'imprimante par défaut. -P NOM pour cibler une imprimante précise.
lpqListe la file d'attente (jobs en cours et en attente). lpq -P NOM pour une imprimante.
lprm NSupprime le job numéro N. lprm - = supprime tous mes jobs.
lpstat -pListe les imprimantes connues et leur état (idle/printing/disabled).
lpstat -dAffiche l'imprimante par défaut.
lpstat -tTout : imprimantes, défaut, jobs, accept/reject status.
$ lpr -P HP-LaserJet rapport.pdf
Envoie le PDF vers une imprimante précise. Sans -P, c'est l'imprimante par défaut (variable $PRINTER ou config CUPS) qui reçoit le job.
$ lpq
HP-LaserJet is ready and printing
Rank    Owner   Job     File(s)                 Total Size
active  alice   42      rapport.pdf             450176 bytes
1st     bob     43      manuel.pdf              1234567 bytes
active = en cours d'impression. 1st, 2nd… = position dans la file. Le numéro de job (42) sert à annuler avec lprm.
$ lprm 42
Annule le job 42. Seul le propriétaire du job ou root peut annuler. lprm - tout court annule tous mes jobs en file.
$ lpstat -t
scheduler is running
system default destination: HP-LaserJet
device for HP-LaserJet: socket://192.168.1.50:9100
HP-LaserJet accepting requests since ...
printer HP-LaserJet is idle.  enabled since ...
État global de CUPS en une commande : scheduler actif, imprimante par défaut, URI (réseau ici), si elle accepte les nouveaux jobs et si elle imprime. Premier réflexe quand « ça n'imprime pas ».
Commandes lp* alternatives : CUPS expose aussi lp (équivalent à lpr, syntaxe System V), cancel (équivalent à lprm). Les deux familles cohabitent — utiliser celle qu'on préfère. L'interface web (http://localhost:631) reste plus pratique pour ajouter/configurer une imprimante.

Voir aussi : systemctl journalctl