每小时 Logrotate 一次是否会重新启动我的进程

每小时 Logrotate 一次是否会重新启动我的进程

我正在考虑将日志轮换设置切换为每小时轮换一次日志,而不是每天轮换一次。我想我已经准备好配置了,但想检查一下配置是否会使用 postrotate 选项触发进程的重新加载/重新启动?

我在 ubuntu 16.04 上运行它,并已将我的配置从 /etc/cron.daily 复制到 /etc/cron.hourly 准备就绪

这是来自 logrotate.d/nginx 文件的配置:

/var/log/nginx/*/*.log {
    hourly
    missingok
    rotate 720
    compress
    delaycompress
    notifempty
    create 640 nginx adm
    sharedscripts
    postrotate
            if [ -f /var/run/nginx.pid ]; then
                    kill -USR1 `cat /var/run/nginx.pid`
            fi
    endscript
}

如果这确实终止了该进程,有没有办法绕过这一步?

答案1

您可以看到的命令:

 kill -USR1 `cat /var/run/nginx.pid`

并没有真正终止该进程。

相反,kill发送特定信号“ USR1对于 nginx 来说,它具有特定含义,它告诉 nginx 主进程重新打开其日志文件。
这实际上意味着 nginx 开始写入新的日志文件。

对于一些其他程序,它们不是设计为适当的守护进程,无法理解此信号,这可能是一个问题,您必须终止并重新启动它们。但这不适用于 NGinx。

相关内容