Débogage Système & Logs
Commandes essentielles pour dépanner les systèmes Linux.
Logs Systemd (journalctl)
Voir les Logs d'un Service
# Logs pour un service spécifique
journalctl -u nginx
journalctl -u ssh
# Suivre les logs en temps réel
journalctl -u nginx -f
# Les 100 dernières lignes
journalctl -u nginx -n 100
Filtrage par Temps
# Depuis 1 heure
journalctl --since "1 hour ago"
# Depuis un moment spécifique
journalctl --since "2024-01-15 10:00:00"
# Plage temporelle
journalctl --since "2024-01-15" --until "2024-01-16"
# Depuis le dernier démarrage
journalctl -b
# Démarrage précédent
journalctl -b -1
Filtrer par Priorité
# Erreurs uniquement
journalctl -p err
# Erreurs et avertissements
journalctl -p warning
# Niveaux de priorité : emerg, alert, crit, err, warning, notice, info, debug
| Option | Description |
|---|---|
-u <service> |
Filtrer par unité systemd |
-f |
Suivre (comme tail -f) |
-n <N> |
Afficher les N dernières lignes |
-p <level> |
Filtrer par priorité |
-b |
Démarrage actuel uniquement |
--since |
Filtre de temps de début |
--no-pager |
Sortie sans pagination |
Inspection de Fichiers & Ports (lsof)
Trouver le Processus Utilisant un Port
# Qui utilise le port 80 ?
lsof -i :80
# Qui utilise le port 443 ? (TCP uniquement)
lsof -i TCP:443
# Toutes les connexions réseau
lsof -i
# Tous les ports en écoute
lsof -i -P -n | grep LISTEN
Trouver les Fichiers Ouverts
# Fichiers ouverts par un utilisateur
lsof -u root
lsof -u www-data
# Fichiers ouverts par un processus
lsof -p 1234
# Qui a ce fichier ouvert ?
lsof /var/log/syslog
# Fichiers dans un répertoire
lsof +D /var/log/
Alternative : ss + fuser
Messages du Noyau (dmesg)
# Timestamps lisibles
dmesg -T
# Suivre les messages du noyau
dmesg -w
# Filtrer par niveau
dmesg --level=err,warn
# Filtrer par facility
dmesg -f kern
# Effacer le ring buffer (nécessite root)
dmesg -c
Cas d'Usage Courants
# Problèmes de périphérique USB
dmesg -T | grep -i usb
# Erreurs de disque
dmesg -T | grep -iE "(sda|nvme|error|fail)"
# Problèmes de mémoire
dmesg -T | grep -iE "(oom|memory|killed)"
L'Option Nucléaire (strace)
Impact sur les Performances
strace ralentit significativement les processus tracés.
Ne jamais utiliser sur des systèmes de production à forte charge sans comprendre l'impact.
Considérez perf ou les outils eBPF pour le débogage en production.
Usage de Base
# Tracer un processus en cours
strace -p <PID>
# Tracer une commande
strace ls -la
# Tracer avec timestamps
strace -t -p <PID>
# Tracer uniquement des syscalls spécifiques
strace -e open,read,write -p <PID>
# Résumé des syscalls
strace -c ls -la
Exemples Pratiques
# Pourquoi ce processus est-il bloqué ?
strace -p $(pgrep -f "stuck_process")
# Quels fichiers sont accédés ?
strace -e openat -p <PID>
# Activité réseau
strace -e network -p <PID>
# Sauvegarder la sortie dans un fichier
strace -o /tmp/trace.log -p <PID>
Alternatives pour la Production
ltrace- Traçage des appels de bibliothèqueperf trace- Overhead plus faiblebpftrace- Basé sur eBPF, impact minimal