У меня два разных компьютера Debian (i386 v AMD), и у меня такая же проблема. logrotate не будет автоматически вращать мои журналы. Он отлично работает, когда я заставляю его вручную, например
/usr/sbin/logrotate -f /etc/logrotate.conf
но для меня это не нормально.
Настройки не были изменены (по крайней мере, я их не менял), коробка AMD - это новая установка, но она не выполняет свою работу.
Если вы заметили подобную проблему, пожалуйста, помогите мне.
Обновление (некоторые выходные данные сервера):
logrotate -d
http://pastebin.com/e6AshtGq
ls -l /var/log
http://pastebin.com/Y2A4Li59
cat /etc/logrotate.conf
http://pastebin.com/1h7Uwctr
ls -l /etc/logrotate.d
http://pastebin.com/NvUAeszM
У меня была аналогичная проблема, но crontab
работал и для некоторых каталогов журналов logrotate
работал, но для некоторых нет. Когда я попытался запустить logrotate вручную, я получил несколько сообщений об ошибках.
user@server:/var/log/apache2$ sudo /usr/sbin/logrotate -f /etc/logrotate.conf
error: error creating output file /var/log/apache2/access.log.1.gz: File exists
error: error creating output file /var/log/apache2/error.log.1.gz: File exists
...
Все из *.1.gz
файлы имели размер 0. Я вручную удалил все файлы, упомянутые в сообщении об ошибке, запустил sudo /usr/sbin/logrotate -f /etc/logrotate.conf
снова, и это сработало.
Я просто хотел бы поделиться этим альтернативным решением и здесь, поскольку это был первый результат поиска, который пришел ко мне, когда я искал проблему, но предложенное решение не сработало для меня. Может быть, это поможет и другим, находящимся в той же ситуации, что и я.
Убедитесь, что ваш logrotate запускается cron.
Редактировать:
Из обсуждения комментария - похоже, что cron работает некорректно. У меня было задание cron в моем crontab без пользователя, но это обнаружилось только при перезапуске демона cron
Мои системы ubuntu и centos имеют /etc/cron.daily/logrotate
файл, содержимое которого
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
В моем / etc / crontab есть следующая строка для выполнения ежедневных заданий
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily
Я знаю я знаю. 5-летняя нить.
Просто подумал, что если это все еще будет довольно популярно в поиске, я внесу свой вклад и предложу свое решение проблемы, с которой я столкнулся. Мои задания logrotate не обрабатывались автоматически на одном из моих серверов. Принудительное вращение работало нормально. Я придумал решение после того, как вручную запустил команду ежедневной ротации:
( cd / && run-parts --report /etc/cron.daily )
Затем я увидел ошибку, из-за которой задания логрорейтинга не запускались:
/etc/cron.daily/logrotate:
error: iptraf-ng:2 duplicate log entry for /var/log/iptraf/*.log
Да, вот так просто. У меня было два файла, определяющих одинаковые журналы для ротации (iptraf и iptraf-ng). Просто удалите одно из конфликтующих определений logrotate для iptraf.
rm /etc/logrotate.d/iptraf
Другой проблемой может быть испорченный файл / etc / crontab. Это означает двойную или тройную проверку синтаксиса этого файла, поскольку он не дает никаких результатов, которые я мог бы найти, если синтаксис неправильный. Тихо завершает работу после неудачной проверки синтаксиса.
Надеюсь, это кому-то сэкономит время.
ОК, у меня была аналогичная проблема.
"журналы не вращаются?" но запустив logrotate вручную (или запустив /etc/cron.daily
и он их просто отлично вращает.
Получается, что cron просто «не работает» каждый день. Странный. Итак, я посмотрел в файл журнала, где cron выводит свои данные и увидел, что «Маркер аутентификации больше не действителен; требуется новый», чтобы исправить эту конкретную проблему, см. Вот
Я наблюдал, как это часто происходило с течением времени, когда сервисы менялись, а параметры, используемые в logrotate, были отредактированы, что приводило к сбоям logrotate каждый день.
Чтобы дать вам представление, последнее исправление касалось уведомить опция в файле apache logrotate больше не действует, что, в свою очередь, приводит к остановке logrotate.
Хотя это уже было рассмотрено до определенного момента, я хотел бы поделиться процессом, который я прохожу при отслеживании этих проблем:
#/usr/sbin/logrotate -f /etc/logrotate.conf
для поиска ошибок (например, postfix: 3 'missingok'.)# vi /etc/logrotate.d/postfix
, и удалите параметр, вызывающий проблему, и сохраните файл.Бывают случаи, когда первый шаг просто выводит что-нибудь, но вы знаете, что есть проблема. Поскольку все это началось из-за того, что файлы журнала для службы не вращались, вы можете наблюдать, как процесс logrotate ищет эту конкретную службу, чтобы узнать, что мешает ей вращаться. Для этого добавьте подробный тег в свою команду logrotate и посмотрите, что происходит в этой папке (если что-нибудь).
Проверьте наличие конфликтующих параметров конфигурации logrotation !!
Я боролся с этой проблемой и, наконец, очень внимательно прочитал некоторую документацию по logrotate, я нашел полезную документацию Вот.
Я указал как Размер параметр и Интервал вращения параметр, хотя на самом деле я не хотел ни того, ни другого. Я хотел, чтобы мои ротации происходили именно тогда, когда они были запланированы в cron.
Итак, избавьтесь от Интервал вращения и Размер параметр. Тогда вы будете получать ротацию каждый раз, когда вызывается logrotate, без необходимости принудительно.
РЕДАКТИРОВАТЬ: OK даже это не совсем работает! Если размер файла журнала ниже определенного порога, журналы не будут чередоваться. Поэтому, когда я запускал задание cron, которое менялось каждые 2 минуты, оно не меняло журналы.
Вы можете увидеть подробную информацию об отладке, если запустите logrotate -d
. Это дает очень полезную информацию об отладке.