我正在考虑将日志轮换设置切换为每小时而不是每天轮换日志。我想我已经准备好配置,但想检查配置是否会使用 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
}
如果这确实杀死了这个过程,有没有办法绕过这个步骤?
可以看到的命令:
实际上并没有杀死进程。
相反,
kill
发送一个特定的信号“USR1
”,这对于 nginx 具有特定的含义,并告诉 nginx 主进程重新打开它的日志文件。这实际上意味着 nginx 开始写入新的日志文件。
对于其他一些没有被设计为适当的守护进程并且不理解这个信号的程序,这可能是一个问题,你必须杀死并重新启动它们。这不适用于 Nginx。