Comment puis-je configurer logrotate pour faire tourner les journaux toutes les heures?

23

Selon le Manuel de l'administration Unix et Linux et man, logrotate a des options pour daily, weeklyet monthly, mais est - il un moyen d'ajouter une hourlyoption?

Ce billet de blog mentionne que vous pouvez définir size 1et supprimer l'option de temps (par exemple daily:), puis appeler manuellement logrotateavec cron- je suppose que quelque chose comme

logrotate -f /etc/logrotate.d/my-hourly-file

mais existe-t-il une solution plus élégante pour faire tourner les journaux toutes les heures?

cwd
la source
Sûr. Quel est votre système d'exploitation, quelle version?
Nils
ubuntu 10.04 et 11
cwd

Réponses:

20

Selon votre système d'exploitation. Certaines (toutes?) Les distributions Linux ont un répertoire /etc/cron.hourlyoù vous pouvez mettre des tâches cron à exécuter toutes les heures.

D'autres ont un répertoire /etc/cron.d/. Vous pouvez y placer des tâches cron qui doivent être exécutées en tant qu'utilisateur spécial avec les paramètres cron habituels d'une entrée crontab (et vous devez spécifier le nom d'utilisateur).

Si vous utilisez l'un de ces éléments au lieu du script de rotation de journal standard, /etc/cron.daily/vous devez copier ce script là et cp /dev/nullà sa position d'origine. Sinon, il sera réactivé par une mise à jour du patch logrotate.

Pour une rotation horaire correcte, veillez également à ce que la dateextdirective ne soit pas définie. Si c'est le cas, par défaut, le premier fichier pivoté obtiendra l'extension de la date actuelle comme YYYYMMDD. Ensuite, la deuxième fois que logrotate deviendrait actif dans la même journée, il saute simplement la rotation même si le sizeseuil a été dépassé.

La raison en est que le nouveau nom du fichier à faire tourner existe déjà et logrotate n'ajoute pas le contenu à l'ancien fichier existant. Par exemple sur RHEL et CentOS, la dateextdirective est donnée par défaut dans /etc/logrotate.conf. Après avoir supprimé ou commenté cette ligne, les fichiers pivotés obtiendront simplement un numéro courant comme extension jusqu'à atteindre la rotatevaleur. De cette façon, il est possible d'effectuer plusieurs rotations par jour.

Nils
la source
5

Juste pour ajouter à la réponse de Nils, si vous changez l'emplacement du logrotatescript sur une boîte Debian ou Ubuntu, il est probablement plus sûr d'utiliser dpkg-divertau lieu de simplement copier le fichier et copier /dev/nullà la position d'origine, par exemple:

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate
boltronique
la source
Je n'en savais rien et j'utilise Ubuntu depuis des années. Merci. :)
Vaughany
2

Une autre option serait d'ajouter la commande logrotate à la liste crontab. Il s'exécutera ensuite toutes les heures.

crontab -e

ajouter la ligne ci-dessous dans la liste crontab

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
Wasantha Herath
la source