logrotate
À quoi il sert
logrotate gère la vie des fichiers de journaux texte. Selon une règle par fichier (fréquence daily, weekly, taille maxsize, nombre de générations rotate), il renomme le fichier courant, en crée un nouveau (create), compresse les anciens (compress, delaycompress), supprime les plus vieux, et exécute un script après rotation (postrotate), en général pour demander au programme de rouvrir son fichier. Sur Debian et Ubuntu, logrotate.timer le lance une fois par jour ; il lit /etc/logrotate.conf, qui inclut /etc/logrotate.d/, et note la date de la dernière rotation de chaque fichier dans /var/lib/logrotate/status.
Quand le choisir
Pour tout fichier de journal texte écrit par un programme : ceux de rsyslog, d'un serveur web, d'une application qui écrit son propre fichier, ou ceux d'un collecteur de journaux. Le journal de systemd (journald) n'en a pas besoin : il a ses propres plafonds (SystemMaxUse=, MaxRetentionSec=). Une application qui écrit sur sa sortie standard sous systemd n'a donc pas de fichier à faire tourner.
Points d'attention
- Un programme écrit dans un inode, pas dans un nom : après le renommage, il continue d'écrire dans
fichier.1tant qu'on ne lui envoie pas un signal (create+postrotate).copytruncateévite le signal, au prix d'une perte possible de lignes, que la page de manuel reconnaît ; réservez-le aux programmes qui ne savent pas rouvrir leurs fichiers. - Testez une règle sans rien modifier avec
logrotate -d <fichier>, puis forcez une vraie rotation aveclogrotate -f -v <fichier>. Le résultat des exécutions planifiées est dansjournalctl -u logrotate.service. - logrotate refuse un répertoire inscriptible par un groupe autre que
root(parent directory has insecure permissions) : ajoutezsu <utilisateur> <groupe>à la règle plutôt que de changer les droits. - Les fichiers de
/etc/logrotate.d/à extension « taboue » (.bak,.dpkg-old,.swp,~...) sont ignorés sans message. hourlyn'a d'effet que si le minuteur tourne chaque heure ; sinon, combinez la fréquence avecmaxsize.- La durée de conservation est une décision de conformité (RGPD, recommandations de la CNIL), pas seulement une question de place.
Par où commencer
La leçon Les journaux d'un parc de serveurs du cours Linux : administration système, qui écrit et teste les règles du collecteur et du journal d'accès de Signalements, et compare create et copytruncate. Puis la page de manuel logrotate(8) et le dépôt du projet.