Tail
| Fiche express | |
|---|---|
| Domaine | Affichage de fichiers / logs |
| Commande | tail, multitail
|
| Contexte | Tout Unix/Linux — lecture de fin de fichier, suivi de logs en continu |
| Voir aussi | Head (début de fichier), Grep (filtrage), Logrotate (rotation de logs) |
tail affiche les dernières lignes d'un fichier — l'usage le plus courant est le suivi en direct d'un fichier de log (-f), éventuellement combiné à grep pour filtrer le flux à la volée.
Nombre de lignes : -n
tail fichier.log # 10 dernières lignes par défaut
tail -n 50 fichier.log # 50 dernières lignes
tail -n50 fichier.log # forme collée, équivalente
tail -c 200 fichier.log # 200 derniers octets plutôt que des lignes
À partir d'une ligne donnée : +n
tail +1 fichier.log # tout le fichier depuis le début (équivalent cat)
tail +100 fichier.log # affiche à partir de la ligne 100 jusqu'à la fin
tail -n +100 fichier.log # forme explicite (GNU coreutils), même résultat
Le signe + inverse la logique de -n : au lieu de compter depuis la fin, on compte depuis le début et on affiche tout ce qui suit la ligne indiquée.
Suivi en continu : -f et -F
tail -f /var/log/syslog # suit le fichier en continu (Ctrl+C pour arrêter)
tail -F /var/log/syslog # comme -f, mais suit aussi si le fichier est renommé/recréé
tail -f -n 100 /var/log/syslog # affiche d'abord les 100 dernières lignes puis suit
La différence entre les deux est cruciale en présence de Logrotate : -f suit le descripteur de fichier ouvert au lancement, donc quand logrotate renomme puis recrée le fichier, tail -f continue de lire l'ancien fichier (renommé) et n'affiche plus rien de nouveau. -F (majuscule) réessaie périodiquement d'ouvrir le fichier par son nom, donc il détecte la rotation et bascule automatiquement sur le nouveau fichier — c'est le choix à privilégier pour tout suivi de log de longue durée sur un serveur avec rotation active.
Combiner avec grep
tail -f /var/log/nginx/access.log | grep --line-buffered "50[0-9]" # filtre les erreurs 5xx en direct
tail -F /var/log/syslog | grep -i "error\|fail" # suivi filtré, résiste à la rotation
⚠️ Avec un pipe vers grep, penser à l'option --line-buffered : par défaut grep bufferise sa sortie quand elle n'est pas un terminal (par exemple redirigée ou vers un autre pipe), ce qui retarde l'affichage des lignes filtrées ; --line-buffered force un flush ligne par ligne, indispensable pour du suivi temps réel.
multitail
multitail affiche plusieurs flux tail -f côte à côte dans un même terminal, avec coloration syntaxique par fichier — pratique pour surveiller plusieurs logs en parallèle sans multiplexeur de terminal séparé (tmux/screen).
yum install multitail # RHEL/CentOS
apt install multitail # Debian/Ubuntu
multitail /var/log/messages /var/log/secure # deux fichiers, deux fenêtres empilées
multitail -s 2 /var/log/nginx/access.log /var/log/nginx/error.log # -s 2 : deux colonnes côte à côte
multitail -i /var/log/app.log -I /var/log/app-errors.log # -i / -I : fusionne deux flux dans une seule fenêtre