man linux_kernel
Linux — Cheat Sheet : Kernel & Système
Référence rapide pour systemd, journald, dmesg, modules noyau, performances et sécurité système.
Référence rapide pour systemd, journald, dmesg, modules noyau, performances et sécurité système.
systemd — Gestion des services
Contrôle des services
systemctl start nginx # démarrersystemctl stop nginx # arrêtersystemctl restart nginx # redémarrersystemctl reload nginx # recharger la configuration (sans downtime)systemctl status nginx # état du service
systemctl enable nginx # activer au démarragesystemctl disable nginx # désactiver au démarragesystemctl enable --now nginx # activer ET démarrer immédiatementsystemctl disable --now nginx # désactiver ET arrêter
systemctl is-active nginx # vérifier si actif (exit code 0/1)systemctl is-enabled nginx # vérifier si activé au bootsystemctl is-failed nginx # vérifier si en erreurInspection des services
systemctl list-units --type=service # services chargéssystemctl list-units --type=service --all # tous (inactifs compris)systemctl list-units --failed # services en échecsystemctl list-unit-files --type=service # tous les fichiers d'unité
systemctl show nginx # propriétés détailléessystemctl cat nginx # afficher le fichier unitsystemctl edit nginx # surcharger (drop-in)systemctl edit --full nginx # modifier le fichier complet
systemctl daemon-reload # recharger après modification d'un unitsystemctl reset-failed # réinitialiser les unités en erreurCibles (targets) et boot
systemctl get-default # target par défautsystemctl set-default multi-user.target # définir la target par défautsystemctl isolate rescue.target # basculer en mode rescuesystemctl isolate graphical.target # basculer en mode graphique
systemctl reboot # redémarrersystemctl poweroff # éteindresystemctl suspend # mettre en veillesystemctl hibernate # hiberner
systemctl list-dependencies nginx # dépendances d'un servicesystemctl list-dependencies --reverse nginx # qui dépend de nginxFichiers unit personnalisés
# /etc/systemd/system/mon-service.service[Unit]Description=Mon service personnaliséAfter=network.targetRequires=docker.service
[Service]Type=simpleUser=appuserWorkingDirectory=/opt/mon-appExecStart=/opt/mon-app/start.shExecReload=/bin/kill -HUP $MAINPIDRestart=on-failureRestartSec=5sStandardOutput=journalStandardError=journal
[Install]WantedBy=multi-user.targetDrop-in override
Utiliser systemctl edit nginx pour créer un fichier dans /etc/systemd/system/nginx.service.d/override.conf sans modifier le fichier d’origine.
journald — Logs système
Consultation des logs
journalctl # tous les logsjournalctl -b # logs du boot actueljournalctl -b -1 # logs du boot précédentjournalctl --list-boots # liste des boots disponibles
journalctl -u nginx # logs d'un servicejournalctl -u nginx -u php-fpm # logs de plusieurs servicesjournalctl -f # suivre en temps réel (tail -f)journalctl -f -u nginx # temps réel pour nginx
journalctl -n 50 # 50 dernières lignesjournalctl -n 50 -u nginx # 50 dernières de nginxjournalctl --since "1 hour ago" # depuis 1hjournalctl --since "2024-01-01" --until "2024-01-02"journalctl --since todayjournalctl --since yesterdayFiltrage des logs
journalctl -p err # erreurs uniquementjournalctl -p warning..err # de warning à err# Niveaux : emerg, alert, crit, err, warning, notice, info, debug
journalctl _PID=1234 # logs d'un PIDjournalctl _UID=1000 # logs d'un utilisateurjournalctl _SYSTEMD_UNIT=nginx.service
journalctl -k # logs noyau uniquement (= dmesg)journalctl -t sshd # par identifiant syslog
journalctl -o json # sortie JSONjournalctl -o json-pretty # JSON formatéjournalctl -o short-precise # avec microsecondesjournalctl -o cat # messages seuls (sans métadonnées)Gestion des logs
journalctl --disk-usage # espace disque utiliséjournalctl --vacuum-size=500M # limiter à 500 Mojournalctl --vacuum-time=30d # supprimer les logs > 30 joursjournalctl --verify # vérifier l'intégrité des logs
# Configuration : /etc/systemd/journald.conf# SystemMaxUse=500M# MaxRetentionSec=1monthdmesg — Messages noyau
dmesg # tous les messages noyaudmesg -H # format human-readable avec couleursdmesg -T # avec timestamps lisiblesdmesg -w # suivre en temps réeldmesg -l err,crit # filtrer par niveaudmesg | grep -i error # filtrer par mot-clédmesg | grep -i usb # events USBdmesg | grep -i eth # events réseaudmesg | grep -i sda # events disquedmesg | tail -50 # 50 derniers messagesdmesg -c # afficher ET vider le buffer (root)Modules noyau
lsmod # modules chargésmodinfo module_name # infos sur un modulemodprobe module_name # charger un module (+ dépendances)modprobe -r module_name # décharger un moduleinsmod /path/module.ko # charger sans gestion des dépendancesrmmod module_name # décharger (sans dépendances)
# Chargement automatique au bootecho "module_name" >> /etc/modules-load.d/custom.conf
# Blacklister un moduleecho "blacklist nouveau" >> /etc/modprobe.d/blacklist.confupdate-initramfs -u # mettre à jour initramfs aprèsPerformances et monitoring
CPU et mémoire
top # moniteur interactifhtop # version amélioréeatop # avec historique disque/réseau
uptime # charge système (load average)vmstat 1 10 # stats VM toutes les secondes (10x)# procs, mémoire, swap, I/O, système, CPU
sar -u 1 5 # utilisation CPU (sysstat)sar -r 1 5 # utilisation mémoiresar -b 1 5 # I/O disquesar -n DEV 1 5 # stats réseau
mpstat -P ALL 1 # par cœur CPUpidstat 1 # par processuspidstat -d 1 # I/O par processusDisques et I/O
iostat -x 1 # stats I/O détailléesiostat -xz 1 5 # sans les devices inactifs
iotop # I/O par processus (root)iotop -o # uniquement les actifs
lsblk # arborescence des blocslsblk -f # avec systèmes de fichiersblkid # UUID et types de FS
hdparm -I /dev/sda # infos SATA du disquehdparm -tT /dev/sda # benchmark lecture
smartctl -a /dev/sda # santé S.M.A.R.T.smartctl -t short /dev/sda # test court S.M.A.R.T.Mémoire
free -h # RAM et swapcat /proc/meminfo # infos détaillées /proc
# Vider les caches (attention en production)sync && echo 3 > /proc/sys/vm/drop_caches# 1 = pagecache, 2 = dentries/inodes, 3 = les trois
swapon --show # partitions swap activesswapoff /dev/sda2 # désactiver le swapswapon /dev/sda2 # activer le swapsysctl — Paramètres noyau
sysctl -a # tous les paramètressysctl vm.swappiness # lire un paramètresysctl -w vm.swappiness=10 # modifier temporairementsysctl -p # appliquer /etc/sysctl.confsysctl -p /etc/sysctl.d/custom.conf
# Persistance : /etc/sysctl.d/99-custom.confnet.ipv4.ip_forward = 1 # activer le routage IPvm.swappiness = 10 # réduire l'usage du swapnet.core.somaxconn = 65535 # connexions en attente maxfs.file-max = 2097152 # limite de fichiers ouvertskernel.panic = 10 # reboot auto après kernel panic (10s)Démarrage et boot
systemd-analyze # temps de boot totalsystemd-analyze blame # temps par service (tri décroissant)systemd-analyze critical-chain # chemin critique du bootsystemd-analyze plot > boot.svg # graphique SVG du boot
# GRUBupdate-grub # régénérer /boot/grub/grub.cfg (Debian)grub2-mkconfig -o /boot/grub2/grub.cfg # (RedHat)grub-install /dev/sda # réinstaller GRUB
# Noyaux disponiblesdpkg --list | grep linux-image # Debian/Ubunturpm -qa | grep kernel # RedHat/CentOSSécurité et audit
# Connexions et authentificationlast # historique des connexionslastb # tentatives échouéeslastlog # dernière connexion par utilisateurwho # connectés en ce momentw # connectés + activité
# Audit systèmeauditctl -l # règles d'audit activesausearch -k fichier_sensible # chercher par clé d'auditaureport --auth # rapport d'authentificationaureport --failed # échecs
# Fichiers ouverts et socketslsof # tous les fichiers ouvertslsof -u alice # par utilisateurlsof -p 1234 # par PIDlsof -i :80 # par portlsof -i TCP:22 # connexions SSHlsof +D /var/log # fichiers ouverts dans un dossier
# Limites systèmeulimit -a # limites de la session couranteulimit -n 65535 # augmenter les fichiers ouvertscat /proc/1234/limits # limites d'un processus/proc et /sys
cat /proc/cpuinfo # informations CPUcat /proc/meminfo # informations mémoirecat /proc/version # version du noyaucat /proc/uptime # durée de fonctionnement en secondescat /proc/loadavg # charge systèmecat /proc/net/dev # statistiques réseau par interfacecat /proc/1234/cmdline # ligne de commande d'un processuscat /proc/1234/status # statut d'un processusls -la /proc/1234/fd # descripteurs de fichiers d'un processus
ls /sys/class/net/ # interfaces réseaucat /sys/block/sda/queue/rotational # 0=SSD, 1=HDDBonnes pratiques
- Ne jamais modifier
/procou/sysdirectement sans comprendre l’impact — passer parsysctl. - Tester les modifications de configuration systemd avec
systemd-analyze verify fichier.service. - Utiliser
journalctl --vacuum-sizerégulièrement siSystemMaxUsen’est pas configuré dansjournald.conf. - Préférer
systemctl reloadàrestartquand disponible pour éviter les interruptions de service. - Surveiller les logs
dmesgaprès toute opération matérielle (ajout RAM, disque, etc.).
# Vérifier un fichier unit avant de le chargersystemd-analyze verify /etc/systemd/system/mon-service.service
# Tester l'impact d'un paramètre sysctl sans l'écriresysctl -w net.ipv4.ip_forward=1 # temporaire, perdu au reboot# Puis le persister seulement si le comportement est correctecho "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-routing.confsysctl -p /etc/sysctl.d/99-routing.conf