logrotate nginx 日志之后,nginx 不往 nginx_access.log 写新日志,而是继续往 nginx_access.log-20180906 写日志。只有 service nginx restart 之后才会重新写回 nginx_access.log 。。。
下面是我的 logrotate 的配置
/log/nginx/*.log {
daily
missingok
rotate 186
dateext
compress
delaycompress
ifempty
create 640 www-data www-data
sharedscripts
postrotate
[ -f /run/nginx.pid ] && /bin/kill -USR1 `cat /run/nginx.pid`
endscript
}
/run/nginx.pid 确实是 nginx 的 pid 文件,求教各位大佬!!!
1
lolizeppelin 2018-09-06 12:17:55 +08:00 via Android
pid 对得上么 滚的时候 nginx 日志里看得见 reload 没
|
2
msg7086 2018-09-06 13:25:55 +08:00
rotate 完了以后你执行一下 /bin/kill -USR1 `cat /run/nginx.pid` 试试呢?
如果执行完没用的话可能是这行命令有问题。 另外我这边 debian 自带的配置是 postrotate invoke-rc.d nginx rotate >/dev/null 2>&1 endscript |
3
yzc27 OP @msg7086
囧。。。我这边 nginx 源 apt 安装的 nginx 自带的 logrotate 配置是[ -f /run/nginx.pid ] && /bin/kill -USR1 `cat /run/nginx.pid`。。 |
4
yzc27 OP @lolizeppelin 对得上。我怀疑是权限问题。我的 log 是放在 /root 里面的 log 子目录里面,正常 nginx 能写得了日志,但 logrotate 就不能写 nginx_access.log ,非得要 service nginx restart 一下才能写。。。
|
5
wuwuyun 2018-09-06 15:32:42 +08:00
copytruncate 就行了 不用重启
|