logrotate: ежедневная ротация не работает, хотя я использовал опцию -f - PullRequest
0 голосов
/ 06 сентября 2018

Вот файл конфигурации logrotate в /etc/logrotate.d/mylog

/var/www/www.mysite.com/logs/* {
        daily
        rotate 365
        compress
        delaycompress
        missingok
        notifempty
        create 0664 apache apache
}

Я установил это вчера в 4 часа дня, а сегодня в 10 утра я не увидел сжатых файлов.

Я пытался войти с опцией -d и -f

С опцией -d я получил этот вывод

reading config file mysite
reading config info for /var/www/www.mysite.com/logs/*

Handling 1 logs

rotating pattern: /var/www/www.mysite.com/logs/*  after 1 days (365 rotations)
empty log files are not rotated, old logs are removed
considering log/var/www/www.mysite.com/logs/access-2018-08-08.log
  log does not need rotating

С параметром -f ничего не появилось.

Но я заметил, что он добавил суффикс .1 к каждому моему журналу.

Кто-нибудь, пожалуйста, объясните, пожалуйста, что это за странное поведение?

1 Ответ

0 голосов
/ 06 сентября 2018

Logrotate не имеет встроенной системы планирования.

Если вы хотите очистить журналы вручную один раз, убедитесь, что вы можете запустить его вручную:

logrotate /etc/logrotate.d/mylog

И если вы проверите man-страницу logrotate для -f поведения:

-f, --force
   Tells  logrotate  to force the rotation, even if it doesn't think this is necessary.  
   Sometimes this is useful after adding new entries to a logrotate config file, 
   or if old log files have been removed by hand, as the new files will be created, 
   and logging will continue correctly.

-d, --debug
   Turns on debug mode and implies -v.  In debug mode, no changes will be made to 
   the logs or to the logrotate state file.

Таким образом, с опцией -f вы принудительно поворачиваете все журналы, таким образом, суффикс .1.

А с параметром -d это пробный прогон, поэтому вы только просматриваете изменения.

Теперь, если вы хотите запускать его ежедневно, вы должны использовать cron.

По умолчанию после установки logrotate должен иметь файл конфигурации по умолчанию / etc / logrotate.conf и задание cron по умолчанию / etc / cron.daily / logrotate

Вы можете использовать их или создать свой собственный файл конфигурации и задание cron.

Скажем, если вы разместите свою пользовательскую конфигурацию в / etc / logrotate.d / mylog , то вы можете поместить следующую работу cron в / etc / cron.d / logrotate-cron запускать его ежедневно.

0 0 * * * root /usr/sbin/logrotate /etc/logrotate.d/mylog --state /etc/logrotate.status

Вы можете проверить файл /etc/logrotate.status, чтобы убедиться, что он работает.

...