logrotate par taille - dois-je changer le cron?

10

Ma configuration actuelle de logrotate ressemble à ceci (en utilisant logrotate 3.8.7)

"/var/log/haproxy.log" {
  daily
  size 250M
  rotate 1
  create 644 root root
  missingok
  compress
  notifempty
  copytruncate
}

Il fonctionne avec succès une fois par jour, mais lorsque la taille dépasse 250M, il ne tourne pas. Il attend donc la fin de la journée pour tourner, quelle que soit sa taille.

J'ai lu qu'il ya l'option maxsize, et après avoir changé size 250Mde maxsize 250Mcela ne fonctionne toujours pas.

Dois-je définir un cron pour exécuter logrotate toutes les heures, ou logrotate s'exécute automatiquement parce qu'il écoute cette taille de fichier, et j'ai quelque chose d'autre qui ne va pas?

Hommer Smith
la source

Réponses:

7

Oui, vous devez exécuter logrotateplus d'une fois par jour pour y parvenir. On y répond dans le deuxième paragraphe de la page de manuel logrotate(8) :

Normalement, logrotateest exécuté comme un travail cron quotidien. Il ne modifiera pas un journal plusieurs fois en une journée, sauf si le critère de ce journal est basé sur la taille du journal et logrotateest exécuté plusieurs fois par jour, ou si l' option -fou --forceest utilisée.

Si vous souhaitez exécuter logrotatetoutes les heures au lieu de tous les jours, vous pouvez le déplacer:

mv /etc/cron.daily/logrotate /etc/cron.hourly

Depuis le 3.8.1, il y en a eu maxsize. La différence entre sizeet maxsizeest décrite ici:

maxsize Taille

Les fichiers journaux sont permutés quand ils grandissent plus que la taille octets avant même l'intervalle de temps spécifié plus ( daily, weekly, monthlyou yearly). L' sizeoption associée est similaire, sauf qu'elle s'exclut mutuellement avec les options d'intervalle de temps et entraîne la rotation des fichiers journaux sans tenir compte de la dernière heure de rotation. Lorsque maxsizeest utilisé, la taille et l'horodatage d'un fichier journal sont pris en compte.

Cela rendrait les deux adaptés à votre utilisation: sizesans aucun intervalle et maxsizesi un intervalle est également nécessaire. Cependant, cela ne change pas le fait que par défaut logrotatene s'exécute que quotidiennement. Cet intervalle convient à la plupart, car dans la plupart des cas, il faut beaucoup plus d'un jour pour qu'un journal se développe 250M.

Esa Jokinen
la source
1
Pour info, il existe une directive maxsize, à partir de 8.1: hpux.connect.org.uk/hpux/Sysadmin/logrotate-3.8.7/…
Hommer Smith
Merci d'avoir remarqué que je lisais une ancienne version du manuel, @HommerSmith! J'ai corrigé ma réponse en conséquence.
Esa Jokinen