web-dev-qa-db-fra.com

Comment changer le jour de la semaine Logrotate décale le fichier lorsqu'il est configuré chaque semaine?

J'ai la configuration suivante qui tourne tout le contenu du dossier Google chaque semaine:

/var/log/google/*.log {
        create 0777 www-data www-data
        weekly
        missingok
        rotate 90
        compress
        delaycompress
        notifempty
        olddir /var/log/google/old
}

Maintenant, le truc, c’est la rotation tous les lundis matin alors que je veux faire la rotation hebdomadaire tous les mercredis.

Je pensais changer l'entrée suivante dans crontab:

47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )

Mais je suis confus si cela fonctionnera, car je pourrais trouver logrotate dans /etc/cron.daily et non dans /etc/cron.weekly.

Est-il possible de changer de fichier mercredi ou lundi? Si oui alors comment?

3
dragosrsupercool

Changer le temps d'exécution des tâches cron hebdomadaires ne vous aidera pas, pour les raisons que vous avez indiquées.

Notez ce que la page de manuel de logrotate dit à propos de weekly rotation:

   weekly Log  files  are  rotated if the current weekday is less than the
          weekday of the last rotation or if more than a week  has  passed
          since  the  last rotation. This is normally the same as rotating
          logs on the first day of  the  week,  but  it  works  better  if
          logrotate is not run every night.

C'est pourquoi il a tendance à tourner le lundi.

Ce que vous pouvez faire est d’exécuter le mercredi une instance spéciale et distincte de logrotate, qui ne s’exécute que pour les journaux de Google. Par exemple, créez /etc/logrotate-google.conf, contenant la configuration que vous avez spécifiée, et créez un travail cron exécuté le mercredi (en tant que root, utilisez donc /etc/crontab ou /etc/cron.d):

46 6 * * 3 root logrotate /etc/logrotate-google.conf
2
muru