почему nginx содержит описания файлов журналов?

на Red Hat Enterprise Linux Server версии 6.6 (Сантьяго) nginx версия: nginx / 1.0.15

Я использую общую конфигурацию logrotate nginx, logrotate работает нормально, а nginx создает новый файл журнала, например access.log или error.log

# cat /etc/logrotate.d/nginx /var/log/nginx/*log { daily rotate 4 missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || : endscript } 

Однако однажды мое свободное место стало низким, и через некоторое время я обнаружил, что nginx хранит файловые дескрипторы удаленных файлов. Единственный способ освободить место на сервере – перезапустить nginx, тем самым освободив дескрипторы файлов.

Есть идеи?

 > [srv2 nginx]# logrotate -f /etc/logrotate.d/nginx > [srv2 nginx]# lsof +L1 > COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME > vmtoolsd 1125 root 3u REG 253,3 4240 0 45 /tmp/vmware-root-2883746505/vmware-apploader-1125.log (deleted) > nginx 38748 nginx 2w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38748 nginx 4w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38748 nginx 5w REG 253,4 0 0 220 /var/log/nginx/access.log (deleted) > nginx 38748 nginx 6w REG 253,4 41819 0 693 /var/log/nginx/localhost.access.log.1 (deleted) > nginx 38749 nginx 2w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38749 nginx 4w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38749 nginx 5w REG 253,4 0 0 220 /var/log/nginx/access.log (deleted) > nginx 38749 nginx 6w REG 253,4 41819 0 693 /var/log/nginx/localhost.access.log.1 (deleted) > nginx 38750 nginx 2w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38750 nginx 4w REG 253,4 1370362 0 674 /var/log/nginx/error.log.1 (deleted) > nginx 38750 nginx 5w REG 253,4 0 0 220 /var/log/nginx/access.log (deleted) > nginx 38750 nginx 6w REG 253,4 41819 0 693 /var/log/nginx/localhost.access.log.1 (deleted) 

2 Solutions collect form web for “почему nginx содержит описания файлов журналов?”

Это нормально, вы, вероятно, «вращали» журнал без перезапуска, поэтому процесс (любой процесс действительно) оставил бы дескриптор открытым.

Либо используйте postrotate либо copytruncate . Это довольно популярно:

 postrotate kill -USR1 `cat /var/run/nginx.pid` &>/dev/null endscript 

сигнал USR1 сообщает nginx перезагрузить файлы журнала (таким образом, освобождая дескрипторы)

Это тот же вопрос, что и тот, который я открыл в репозитории ModSecurity. FYI, я связался с spyderlabs для профессионального оплачиваемого контракта на поддержку nginx, и я не слышал о них, так как они начали изучать поддержку nginx … Я остановил все модули mod_security в nginx на данный момент поскольку у меня есть другие ожидающие ошибки без решений прямо сейчас …

  • Nginx прослушивает порт, только отвечает, если установлен на порт 80
  • nginx обратный прокси для jenkins, возвращающий 404
  • Использование Incrond Inotify, но имеющих проблемы с группами пользователей / разрешениями
  • Аутентификация пользователей через LDAP с использованием nginx
  • как использовать html tidy на Nginx
  • Проблемы с неразрешенными зависимостями от Debian 6 Sqeeze
  • nginx: директива «server» здесь запрещена
  • Nginx wordpress и неправильный путь
  • nginx ./configure не может найти openssl
  • Что действительно делает этот код?
  • Перезапустить PHP-FPM из скрипта PHP
  • Nginx + PHP-FPM, обслуживающий файлы .php в качестве загрузок
  • Linux и Unix - лучшая ОС в мире.