V závislosti na vašem OS. Některé (všechny?) distribuce Linuxu mají adresář /etc/cron.hourly
kde můžete umístit úlohy cron, které se mají provádět každou hodinu.
Ostatní mají adresář /etc/cron.d/
. Zde můžete umístit cron-úlohy, které mají být provedeny jako speciální uživatel s obvyklým nastavením cron záznamu crontab (a musíte zadat uživatelské jméno).
Pokud použijete některý z nich místo standardního skriptu pro rotaci protokolu v /etc/cron.daily/
měli byste tam zkopírovat tento skript a cp /dev/null
do původní polohy. Jinak bude znovu aktivován opravou logrotate.
Pro správnou hodinovou rotaci také dbejte na to, aby dateext
direktiva není soubor. Pokud ano, ve výchozím nastavení získá první otočený soubor příponu aktuálního data, například RRRRMMDD. Pak by se logrotate podruhé aktivovalo ve stejný den, jednoduše rotaci přeskočí, i když size
prahová hodnota překročila.
Důvodem je, že nový název souboru, který se má otočit, již existuje a logrotate nepřipojí obsah ke stávajícímu starému souboru. Například na RHEL a CentOS je dateext
direktiva je standardně uvedena v /etc/logrotate.conf
. Po odstranění nebo okomentování tohoto řádku budou otočené soubory jednoduše dostávat průběžné číslo jako příponu, dokud nedosáhnou rotate
hodnota. Tímto způsobem je možné provádět více rotací za den.
Jen pro doplnění k Nilsově odpovědi, pokud změníte umístění logrotate
skript na krabici Debian nebo Ubuntu, je pravděpodobně bezpečnější použít dpkg-divert
místo pouhého zkopírování souboru a zkopírování /dev/null
do původní polohy, např.:
dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate
Další možností by bylo přidání příkazu logrotate do seznamu crontab. Potom se spustí každou hodinu.
crontab -e
přidat pod řádek do seznamu crontab
0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file