Nginx and logrotate
admin at sysadmins.el.kg
admin at sysadmins.el.kg
Thu Aug 1 02:41:23 UTC 2013
01.08.2013 03:07, Sergey Kobzar пишет:
> Linux 3.8.13-gentoo x86_64
> nginx-1.4.1-r2
> logrotate-3.8.4
>
> cat /etc/logrotate.d/nginx:
> /var/log/nginx/*.log {
> daily
> rotate 5
> missingok
> nocompress
> sharedscripts
> postrotate
> test -r /run/nginx.pid && kill -USR1 `cat /run/nginx.pid`
> endscript
> }
>
> /etc/logrotate.conf:
> weekly
> rotate 4
> create
> dateext
> compress
> notifempty
> nomail
> noolddir
> include /etc/logrotate.d
> /var/log/wtmp {
> monthly
> create 0664 root utmp
> minsize 1M
> rotate 1
> }
> /var/log/btmp {
> missingok
> monthly
> create 0600 root utmp
> rotate 1
> }
>
> # ls -alh /var/log/nginx/ | grep access.log
> -rw-r--r-- 1 nginx root 0 Jul 30 03:10 access.log
> -rw-r--r-- 1 nginx root 4.7G Jul 18 10:09 access.log-20130712
> -rw-r--r-- 1 nginx root 7.6G Jul 29 09:46 access.log-20130719
> -rw-r--r-- 1 nginx root 1.4G Jul 31 22:04 access.log-20130730
>
> Т.е. запись в access.log не идет, а растет access.log-20130730.
>
> kill -USR1 `cat /run/nginx.pid` ситуацию не меняет.
>
> Что я не так?
>
> Спасибо.
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
У меня (RHEL 6) в качестве postrotate-команды используется эта:
/etc/init.d/nginx reload > /dev/null 2>/dev/null || true
в скрипте /etc/init.d/nginx в функции отвечающей за reload используется
killproc $nginx -HUP
Попробуйте сменить -USR1 в вашей команде на -HUP?
Вот так это выглядит целиком:
/var/log/nginx/*log {
missingok
compress
notifempty
sharedscripts
postrotate
/sbin/service nginx reload > /dev/null 2>/dev/null || true
endscript
}
Подробная информация о списке рассылки nginx-ru