Назад | Перейти на главную страницу

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

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

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

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

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

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