У меня очень загруженный файл журнала (назовем его /var/log/service.log
), который также часто ищут для устранения неполадок. Вывод на него почти непрерывный и круглосуточный. Вероятно, он выдает около 1-2 ГБ в день, но нам нужно все.
Так как fgrep
работы с большим файлом журнала непрактично медленным, необходимо часто менять его. у меня есть logrotate
настроен на запуск /etc/cron.hourly
, с hourly
директива и ограничение размера 512M
или так.
Это работает так, как ожидалось: файл вращается с /var/log/service.log
к /var/log/service.log-20150810
или что у тебя. Проблема в том, что переименование - это просто косметическое изменение записи inode / directory, поэтому rsyslogd
продолжает писать в /var/log/service.log-20150810
сейчас и на некоторое время, пока вновь созданный /var/log/service.log
сидит пусто. В какой-то момент, rsyslogd
вместо этого решает начать писать в новый, но я не понимаю его рифму или причину этого.
В любом случае, мне нужно как-то "пнуть" rsyslogd
сказать ему начать писать на новый, первозданный /var/log/service.log
после ротации журнала. Отправка SIGHUP, похоже, не помогает. Любые идеи, которые не связаны с потенциальной потерей большого количества записей журнала (например, перезапуск rsyslogd
) будет оценена!
(Примечание: я так понимаю, logrotate
схема именования приведет к /var/log/service.log.1
и еще много чего, я немного озадачен, увидев /var/log/service.log-20150810
рядом с ним. Делает rsyslogd
сделать собственное вращение тоже внутри? Есть ли у этого какие-то отрицательные последствия?)
Спасибо заранее!