一个 cron 作业在特定文件大小超过 1GB 时删除该文件?

一个 cron 作业在特定文件大小超过 1GB 时删除该文件?

当日志文件在几个小时内达到 27 GB 时,我的服务器因严重损坏而崩溃。日志文件每天都会被压缩,并且通常非常小,24 小时内可能达到 10mb。今天出现了一个问题,导致堆栈跟踪每秒打印20次,我正在睡觉,日志变成27GB,当硬盘驱动器满时,发生严重损坏和数据丢失。日志文件将始终被称为“latest.log”,我需要一个 cron 作业,如果该文件变得大于 1GB,它将删除该文件,以防止将来出现这种火车事故。谢谢你帮助我。

答案1

我不会用 cron 来做到这一点,尽管如果你坚持这样做,简单的 find 行就可以做到这一点。请注意,您需要重新启动该服务,因为 Unix 中的文件只有在不再使用时才会消失。

回到 crontab:

*/10 * * * * find /dir -name latest.log -size +1GB -exec rm -f {} \; -exec command_to_restart_your_service \;

当您谈论堆栈时,我假设您正在谈论 tomcat。看看下面的帖子。不过,如果该服务器如此重要,我会将所有日志转发到远程日志服务器。为什么你会受到损害,你也在那里运行 SQL 服务器吗?我会在单独的服务器上运行它。

这是有关限制日志大小的文章的链接。

https://stackoverflow.com/questions/8342336/how-to-set-maximim-number-of-rolls-and-maximum-log-size-for-tomcat

相关内容