一行命令搞定Nginx日志自动清理

2025.10.11 奇思妙想 1637
33BLOG智能摘要
磁盘空间告警又来了?Nginx日志悄悄吃掉20GB空间,差点让服务器瘫痪!运维老手亲授救命绝招:只需一行命令,就能自动清理日志,彻底告别磁盘爆满的噩梦。本文揭秘这个高效神器——`find /var/log/nginx -name "*.log" -type f -mtime +7 -exec truncate -s 0 {} ;`,它不是简单删除,而是智能截断7天前日志文件,既释放空间又不影响Nginx持续写入。你将学到:为什么直接删日志会引发服务中断?如何用truncate安全清零?实战演示命令效果,手把手教你设置每日凌晨自动清理的crontab任务。更关键的是,避开三大致命坑:必须先备份核心日志、务必在测试环境验证、严禁用rm命令!这个方案已救我上百次危机,省下数小时手动操作。点击阅读全文,立即获取这份运维必备的“磁盘救急指南”,让你的服务器从此轻装上阵,稳定无忧。
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

一行命令搞定Nginx日志自动清理:告别磁盘爆满的烦恼

一行命令搞定Nginx日志自动清理

作为一名运维工程师,我经常遇到服务器磁盘空间告警的紧急情况。排查后发现,罪魁祸首往往是Nginx日志文件占用了大量空间。今天我就分享一个简单实用的解决方案——只需一行命令,就能实现Nginx日志的自动清理。

问题背景:为什么需要清理Nginx日志

记得上周,我收到监控系统发来的磁盘空间告警。登录服务器一看,/var/log/nginx 目录下的日志文件竟然占用了20GB空间!这些access.log和error.log文件如果不定期清理,不仅会耗尽磁盘空间,还会影响系统性能。

解决方案:一行命令搞定

经过多次实践,我找到了这个既简单又有效的命令:

find /var/log/nginx -name "*.log" -type f -mtime +7 -exec truncate -s 0 {} ;

让我来解释一下这个命令的各个部分:

  • find /var/log/nginx:在Nginx日志目录中查找
  • -name "*.log":匹配所有.log文件
  • -type f:只查找文件,不包括目录
  • -mtime +7:查找7天前的文件
  • -exec truncate -s 0 {}:将文件大小截断为0

实战演示:执行效果验证

在执行清理前,我们先检查一下当前日志文件的状态:

ls -lh /var/log/nginx/*.log

执行清理命令后,再次检查:

find /var/log/nginx -name "*.log" -type f -mtime +7 -exec truncate -s 0 {} ;
ls -lh /var/log/nginx/*.log

进阶用法:设置定时任务

为了让清理工作自动化,我们可以设置crontab定时任务:

# 编辑定时任务
crontab -e

# 添加以下内容,每天凌晨2点执行清理
0 2 * * * find /var/log/nginx -name "*.log" -type f -mtime +7 -exec truncate -s 0 {} ;

踩坑提示:重要注意事项

在实践中我踩过几个坑,希望大家注意:

  1. 使用truncate而不是rm:直接删除日志文件会导致Nginx无法继续写入日志
  2. 先备份重要日志:清理前确保已经备份了需要分析的日志
  3. 测试环境验证:在生产环境执行前,务必在测试环境验证命令效果

这个简单的一行命令帮我解决了无数次磁盘空间危机,希望它也能成为你的运维工具箱里的利器。如果你有更好的方法,欢迎在评论区分享交流!

评论

  • 这命令太实用了,终于不用手动清日志了👍

  • truncate确实比rm安全,之前踩过坑,深有体会