使用“tail”轮换 nginx 日志,以便限制单个日志文件的大小

使用“tail”轮换 nginx 日志,以便限制单个日志文件的大小

可用于tail轮换 nginx 日志文件为了有一个单一的日志文件尺寸有上限吗?

tail -c 1000000 access.log > temp.log
mv temp.log access.log
kill -USR1 `cat /var/run/nginx.pid`

access.log每次超过字节数时,上述操作将在 cron 作业中执行(每 5 分钟运行一次)1100000

最后一行告诉 nginx 重新打开日志文件(因为第二行删除了原始文件access.log

我读过有关轮换(nginx)日志的各种方法,但从未读过这种方法。

这样,我最终会得到一个大小受限的单个文件。

并且轮换不适用于一组文件而是适用于单个日志文件内的日志条目。

当然tail -c(从评论来看)会截断第一行(最旧的行)。

主要的问题是,当 tail 写入截断文件时,该过程仍在写入日志条目,因此有些条目可能迷路。


底注:

我知道logrotate这些newsyslog工具,也读过文档的主要部分,而且它们对于普通场景来说设置起来也很简单。

我并不是想重新发明轮子。我只是“好奇”想知道是否可以用不同的方式完成事情。

答案可能是理由非常充分。

我只是想更好地理解这个问题。

相关内容