У кого-нибудь были проблемы с logrotate до того, как файл журнала был повернут, а затем вернулся к тому же размеру, который был изначально? Вот мои выводы:
Logrotate Script:
/var/log/mylogfile.log { повернуть 7 ежедневно компресс olddir / log_archives missingok notifempty copytruncate }
Подробный вывод Logrotate:
копирование /var/log/mylogfile.log в /log_archives/mylogfile.log.1 усечение /var/log/mylogfile.log сжатие журнала с помощью: / bin / gzip удаление старого журнала /log_archives/mylogfile.log.8.gz
Файл журнала после усечения происходит
[root @ server ~] # ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 часть1 часть1 0 11 января 17:32 /var/log/mylogfile.log
Буквально через несколько секунд:
[root @ server ~] # ls -lh /var/log/mylogfile.log -rw-rw-r-- 1 часть1 часть1 3.5G 11 января 17:32 /var/log/mylogfile.log
Версия RHEL:
[root @ server ~] # cat / etc / redhat-release Red Hat Enterprise Linux ES выпуск 4 (обновление Nahant 4)
Версия Logrotate:
[root @ DAA21529WWW370 ~] # rpm -qa | grep logrotate Logrotate-3.7.1-10.RHEL4
Несколько заметок:
- Служба не может быть перезапущена на лету, поэтому я использую copytruncate
- Журналы вращаются каждую ночь, в соответствии с
olddir
каталогом, содержащим файлы журналов в нем каждую ночь.
Я чрезвычайно уверен, что Kjetil ударил его. Дрю, возможно, ты еще не убежден его объяснением, но я призываю тебя внимательно прочитать то, что он сказал.
Если вы примете это, исправление будет либо останавливать и перезапускать ваше приложение, когда журналы вращаются, либо использовать инструмент, подобный «rotatelogs» apache, где вы передаете вывод журнала в инструмент через трубу, и инструмент заботится о вращая лог-файл очень часто. Например, один из моих экземпляров apache регистрируется с
что вызывает много лог-файлов с такими именами, как
появляться без перезапуска apache; Затем я могу сжать их вручную после свершившегося факта. Обратите внимание, как вращение выполняется каждую неделю, то есть каждые 604800 секунд, то есть передаваемый аргумент
rotatelogs
.Если вы не можете остановить и перезапустить приложение, и оно не может войти через канал, я думаю, у вас есть реальная проблема. Возможно, у других будут предложения.
источник
было бы здорово, если бы вы могли отправить весь логротейт.
Зачем пытаться использовать kill -HUP? (Классическая перезагрузка без перезапуска ) метод.
Также ... уточните,
lsof
кто имеет доступ к файлу.источник
kill -HUP
как это приложение не может быть затронуто каким-либо образом - это чувствительное приложение, которым я не владею (я даже не управляю им - я только управляю стороной ОС), поэтому я должен быть в состоянии сделать это путь./etc/cron.daily
был начат запланированный вход в систему . Вопрос ко всем: Есть ли что-то, что скрипт logrotate делает иначе, чем запуск logrotate вручную? Мой скрипт logrotate выглядит буквально так/usr/sbin/logrotate /etc/logrotate.conf
. Это довольно сложно.Просто используйте «>>», что означает добавление вместо «>», что означает создание из ваших сценариев, которые пишут в этот файл. У меня была точно такая же проблема, и я исправил ее, используя append в моем скрипте.
SomeScript.sh >> output.txt
Надеюсь, что это понятнее.
источник
>
из сценария. Более того, этот ответ сбивает с толку, потому что между сценариями>
и>(
)
в них есть существенная разница . Наконец, если код, выполняющий запись, обновляется, было бы гораздо лучше, если бы он просто начал писать в новый лог-файл после того, какlogrotate
все сделано.