我正在考虑将日志轮换设置切换为每小时轮换一次日志,而不是每天轮换一次。我想我已经准备好配置了,但想检查一下配置是否会使用 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。