Почему Apache отказывается писать в файлы журналов ( ErrorLog
/ / CustomLog
) после того, как я вручную удалил их содержимое?
Он не будет записывать в эти файлы журнала снова, пока я не перезапущу Apache.
Почему это так? Как я могу безопасно очистить файл журнала без перезагрузки Apache?
У меня есть Apache 2.2.14 на Ubuntu 10.04.
apache-2.2
ubuntu
AtomicFault
источник
источник
logrotate
что посылает соответствующий сигнал перезагрузки / перезапуска в Apache (см. Ответ Педро ниже). Никгрим объяснил причину остановки журналов - Apache все еще пишет в старый inode (который больше не подключен к файловой системе, где бы вы ниОтветы:
Я только что сделал краткий тест:
Обратите внимание, что
vimtest
после редактирования он имеет другой номер inode и, таким образом, фактически является другим файлом (хотя и с тем же именем, что и старый файл).Поэтому, когда вы редактируете файл с помощью vim, он удаляет старый файл и создает новый с тем же именем. Проблема, которую вы видите, вызвана тем, что Apache все еще пишет в старый (удаленный) файл (вы можете проверить это с помощью
lsof
).Если вы действительно хотите обрезать файл журнала, подумайте
truncate -s 0 /path/to/file.log
(который, кажется, усекает на месте)источник
Я бы порекомендовал принудительно повернуть файлы журнала Apache2 с помощью:
Если вы посмотрите
/etc/logrotate.d/apache2
, вы увидите, чтоApache2
конфигурация должна быть перезагружена после удаления файла журнала:В Ubuntu вы можете сделать следующее:
источник