Lighttpd перестает писать в access.log

У меня есть эта проблема с моим lighttpd установка, где вход в access.log прекратится, как только программное обеспечение для ротации журналов по умолчанию стирает мой access.log после копирования в access.log-YYYYMMDD, Я должен остановить и перезапустить службу, чтобы продолжить запись в журнал.

Вот uname а также centos-release Информация для деди, где это происходит:

np ~ > uname -a && cat /etc/centos-release
Linux sevlet 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
CentOS Linux release 7.0.1406 (Core)

Я понятия не имею, какое программное обеспечение для ротации журналов предварительно установлено на этом устройстве, и я понятия не имею, почему lighttpd полностью перестает писать в access.log как только файл будет повернут. У кого-нибудь есть идеи, что происходит и / или как это исправить?

Решено!

Любой, у кого есть эта проблема или похожая на минимальной установке CentOS 7, пожалуйста, прочитайте:

@chutz предложил мне взглянуть на lighttpd конфигурация в /etc/logrotate.d/, Конфигурация по умолчанию для lighttpd работает, но вызывает killall перезапустить демон. Минимальная установка CentOS 7 не включает killall,

Для установки на CentOS:

yum -y install psmisc

Надеюсь, это поможет кому-то!

1 ответ

Решение

CentOS поставляется с Logrotate.

Вам нужно перезапустить или иным образом сигнализировать любых демонов после перемещения их файлов журнала. Вот как работает Linux. Файл может быть переименован или удален, но пока процесс имеет открытый файл (т. Е. Процесс имеет открытый дескриптор файла, который не зависит от имени файла), этот процесс может продолжать запись в него. Да, можно продолжить запись в удаленный файл, и иногда может даже оказаться возможным восстановить удаленный файл, если у кого-то он еще открыт.

Проверьте /etc/logrotate.d примеры того, как перезагрузить процесс после ротации журнала.

PS Я не заметил, что вы используете CentOS 7. Мой ответ может быть очень неправильным.

Другие вопросы по тегам