Selon le Manuel de l'administration Unix et Linux et man
, logrotate a des options pour daily
, weekly
et monthly
, mais est - il un moyen d'ajouter une hourly
option?
Ce billet de blog mentionne que vous pouvez définir size 1
et supprimer l'option de temps (par exemple daily
:), puis appeler manuellement logrotate
avec 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?
Réponses:
Selon votre système d'exploitation. Certaines (toutes?) Les distributions Linux ont un répertoire
/etc/cron.hourly
où 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à etcp /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
dateext
directive 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 lesize
seuil 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
dateext
directive 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 larotate
valeur. De cette façon, il est possible d'effectuer plusieurs rotations par jour.la source
Juste pour ajouter à la réponse de Nils, si vous changez l'emplacement du
logrotate
script sur une boîte Debian ou Ubuntu, il est probablement plus sûr d'utiliserdpkg-divert
au lieu de simplement copier le fichier et copier/dev/null
à la position d'origine, par exemple:la source
Une autre option serait d'ajouter la commande logrotate à la liste crontab. Il s'exécutera ensuite toutes les heures.
ajouter la ligne ci-dessous dans la liste crontab
la source