У меня проблема с моим 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. Мой ответ может быть очень неправильным.