在/etc/logrotate.d/nginx
我找到:
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
这是我感到好奇的postrotate
命令。
我认为这意味着一旦成功轮换日志,就会杀死 nginx 进程。
我知道在重新启动 nginx 时会创建新日志。
我能解决的问题是,流程如何自动重启,服务网页是否有任何中断?
答案 0 :(得分:2)
logrotate
将重命名/var/log/nginx/*.log
中的日志文件。
之后,nginx无法输出错误日志或访问原始日志文件的日志。 (有关详细信息,请参阅@ mata在此答案下的评论。)
要解决此问题,应将USR1
信号发送到nginx以重新打开日志文件。
这就是postrotate
将USR1
发送给nginx master的原因,这个信号不会杀死nginx。
有关使用信号控制nginx的更多详细信息,请参阅this document。