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 文件:
- 打开 cron
crontab -e
- 添加条目
* * * * 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