求教各位大佬关于 logrotate nginx 日志的问题

2018-09-06 09:42:38 +08:00
 yzc27

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 文件,求教各位大佬!!!

1608 次点击
所在节点    问与答
7 条回复
lolizeppelin
2018-09-06 12:17:55 +08:00
pid 对得上么 滚的时候 nginx 日志里看得见 reload 没
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
yzc27
2018-09-06 13:34:58 +08:00
@msg7086
囧。。。我这边 nginx 源 apt 安装的 nginx 自带的 logrotate 配置是[ -f /run/nginx.pid ] && /bin/kill -USR1 `cat /run/nginx.pid`。。
yzc27
2018-09-06 13:40:30 +08:00
@lolizeppelin 对得上。我怀疑是权限问题。我的 log 是放在 /root 里面的 log 子目录里面,正常 nginx 能写得了日志,但 logrotate 就不能写 nginx_access.log ,非得要 service nginx restart 一下才能写。。。
wuwuyun
2018-09-06 15:32:42 +08:00
copytruncate 就行了 不用重启
yzc27
2018-09-06 15:46:32 +08:00
@wuwuyun 网上说那个参数,在切换文件时有可能丢失一丢丢的日志。。。。
wuwuyun
2018-09-06 17:06:42 +08:00
@yzc27 选个没人用的时间 rotate 不行嘛,要是 24 小时都是巨量访问。。。那当我没说

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/486616

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX