Nginx在被log-rotate杀死后如何重启?

时间:2016-03-31 05:53:53

标签: linux nginx logrotate

/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 时会创建新日志。

我能解决的问题是,流程如何自动重启,服务网页是否有任何中断?

1 个答案:

答案 0 :(得分:2)

作为每日cron作业运行的

logrotate将重命名/var/log/nginx/*.log中的日志文件。 之后,nginx无法输出错误日志或访问原始日志文件的日志。 (有关详细信息,请参阅@ mata在此答案下的评论。)

要解决此问题,应将USR1信号发送到nginx以重新打开日志文件。 这就是postrotateUSR1发送给nginx master的原因,这个信号不会杀死nginx。

有关使用信号控制nginx的更多详细信息,请参阅this document