как запустить logrotate каждый час - PullRequest
0 голосов
/ 28 мая 2019

Я создал файл program.conf, который ежечасно регистрирует мои журналы в экземпляре EC2. logrotate работает хорошо, когда я заставляю его ( sudo logrotate program.conf --verbose --force ), но он не запускается каждый час.

Я попробовал несколько решений, прибегнув к этой проблеме, например, поместив мой файл program.conf в /etc/logrotate.d и переместив logrotate из cron.dail в cron.hourly. но это не работает.

Вот моя программа .conf:

/home/user_i/*.log{
hourly
missingok
dateext 
rotate 1
compress
size 100M
sharedscripts
postrotate
    /usr/bin/bash file.sh
endscript
}

Есть идеи, пожалуйста?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

OP заявляет в комментарии, что они не могут использовать crontab и требует решения, использующего /etc/cron.hourly.

  1. Возьмите файл "program.conf", который вы используете для определения параметров logrotate, и поместите этот файл где-нибудь доступным для пользователя root, но NOT в /etc/logrotate.d/ каталог. Идея состоит в том, что если мы запускаем эту почасовую работу по-своему, мы не хотим, чтобы logrotate также выполнял это вращение, когда оно обычно выполняется каждый день. Этот файл должен быть доступен для чтения только пользователю root, а не исполняемому файлу.

  2. Вы должны убедиться, что ALL необходимых вам параметров logrotate находятся внутри этого файла. Мы будем использовать logrotate для выполнения поворота, используя только этот файл конфигурации, но это также означает, что любые из «глобальных» параметров, которые вы определили в /etc/logrotate.conf, не будут приниматься во внимание. Если у вас есть какие-либо параметры, которые должны соблюдаться вашим пользовательским ротацией, они должны быть скопированы в ваш файл "program.conf".

  3. Внутри вашей папки /etc/cron.hourly создайте новый файл (исполняемый пользователем root), который будет скриптом, выполняющим наше пользовательское вращение каждый час (соответственно настройте ваш shell / shebang):

    #! / USR / бен / Баш

    logrotate -f /some/dir/program.conf

Это заставит cron запускать ежечасное принудительное вращение для этого файла конфигурации, не влияя на обычную функциональность logrotate.

0 голосов
/ 28 мая 2019

Вам нужно будет добавить задание в ваш crontab

crontab -e

, а затем добавить задание, которое запускается каждый час 14 минут назад,

14 * * * * /usr/sbin/logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state

Взято из: https://www.digitalocean.com/community/tutorials/how-to-manage-logfiles-with-logrotate-on-ubuntu-16-04

Также дополнительно проверьте, действительно ли работает crontab, выполнив

service crontab status

, если он остановлен, вы можете запустить его, выполнив

service crontab start
...