logrotate 状态文件极大

logrotate 状态文件极大

Ubuntu 16.04 机器上的 Apache2 在其托管的网站上出现问题。它的容量已达到 100%。进一步查看du,~100gb 硬盘的大部分空间被 中的两个文件填满/var/lib/logrotate/

logrotate其中有名为/var/lib/logrotate/status和的文件/var/lib/logrotate/status.clean占用了大量空间......30gb 和 60gb。

我知道这logrotate是用来定期清除日志文件的,但似乎默认情况下它不会清除自己的“日志”文件。我通过删除其中的两个文件解决了磁盘空间问题rm -rf /var/lib/logrotate/*

/var/lib/logrotate/status已重新填充全天轮换进程产生的新日志)

如果 logrotate 不轮换它自己的日志,这种情况会继续发生吗?

答案1

删除或旋转logrotate.status文件只是权宜之计。您需要退后一步,问自己一个问题:“文件为什么logrotate.status这么大?”

我会查看tail -n 500该状态文件并查看其中列出的文件。我认为您的 logrotate 配置文件很有可能正在轮换您从未打算轮换的内容。

答案2

您可以设置一个 cron 作业来定期清理或轮换/截断 logrotate.status 文件。如果您的服务器流量适中,我建议每周进行一次,如果流量极大,则建议每天进行一次。

要设置每周的 cron 作业来重置 logrotate.status 文件:

  1. 打开 croncrontab -e
  2. 添加条目 * * * * 1 echo > /var/lib/logrotate.status

设置每周文件轮换: 创建一个脚本(确保它可以由 cron 用户执行)并运行每周 cron 来调用它。

示例脚本:

#!/bin/bash
/bin/mv /var/lib/logrotate.status.3 /var/lib/logrotate.status.4
/bin/mv /var/lib/logrotate.status.2 /var/lib/logrotate.status.3
/bin/mv /var/lib/logrotate.status.1 /var/lib/logrotate.status.2
/bin/mv /var/lib/logrotate.status /var/lib/logrotate.status.1

要设置脚本的文件权限:

chmod u+x [script-filename]

Cron任务格式:

* * * * 1 /full/path/to/your/script

相关内容