磁盘空间爆满自动清理无用日志定时任务

先搞清楚磁盘空间被什么占用了

很多新手看到“磁盘空间不足”的报警就慌了,其实第一步不是直接删除文件,而是弄清哪些目录占了最多空间。
登录服务器后执行以下命令:

df -h

这个命令会列出各分区的使用率。
如果发现某个分区(比如 / 或 /var)快满了,下一步就定位大文件。
用 du 命令逐层查看:

# 先看根目录下各个一级目录的大小(单位MB)
cd / && du -sh * | sort -rh | head -20
# 如果日志通常放在 /var/log,也可以直接查这下面
sudo du -sh /var/log/* | sort -rh | head -20

重点关注 *.log、*.gz、*.out 这类日志文件。
比如 /var/log/syslog、/var/log/messages、Nginx的 access.log、MySQL的 slow.log 等。
一旦确认是无用日志,就可以开始写自动清理脚本了。

编写一个安全可控的日志清理脚本

直接 rm -rf 风险很大,建议先编写 Shell 脚本,按天数或大小保留最近的日志。
假设我们要清理 /var/log 下7天前的 .log 文件,脚本如下:

#!/bin/bash
# 日志清理脚本:保留5天,之外的压缩或删除
LOG_DIR="/var/log"
DAYS=7

# 先压缩超过7天的日志(可选),再删除超过7天的日志
find "$LOG_DIR" -name "*.log" -type f -mtime +$DAYS -exec rm -f {} \;

# 也可以删除压缩过的旧文件
find "$LOG_DIR" -name "*.gz" -type f -mtime +$DAYS -exec rm -f {} \;

echo "$(date): 清理完成,已删除 $DAYS 天前的日志文件" >> /var/log/cleanup_log.log

把上面的内容保存为 clean_logs.sh,然后赋予执行权限:

chmod +x /home/your_user/clean_logs.sh

注意:在正式使用前,建议先手动运行一次,确认不会误删重要文件。
可以先用 find 加 -print 参数查看会匹配哪些文件,确认无误后再换成 -exec rm。

用crontab让清理任务自动跑起来

Linux 的定时任务管家是 crontab。
编辑当前用户的定时任务:

crontab -e

(如果是 root 用户,建议用 sudo crontab -e 来管理全局任务)

在文件末尾添加一行,例如每天凌晨2点执行一次清理脚本:

0 2 * * * /bin/bash /home/your_user/clean_logs.sh

各字段含义:分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 星期(0-7)。
上面的意思是每天2:00执行。
保存后,crontab 会自动加载。
可以用以下命令查看任务是否已添加:

crontab -l

这样就实现了磁盘空间爆满自动清理无用日志定时任务的核心步骤。

新手最容易踩的坑

  • 脚本路径写绝对:crontab 环境变量有限,脚本中所有命令和路径都要写绝对路径(如 /bin/find),或者脚本开头 export PATH=/usr/bin:/bin。
  • 文件权限问题:如果脚本需要删除 /var/log 下的文件,需要 root 权限。建议用 sudo crontab -e 编辑 root 的定时任务,或者给脚本 setuid(不推荐)。
  • 误删重要日志:有些日志(如系统安全日志)需保留较长时间。建议先在测试环境跑一周,确认清理粒度没问题再上线。
  • 忘记清理自己的脚本日志:上面脚本把执行日志写入 /var/log/cleanup_log.log,时间久了这个文件也会变大。可以在脚本末尾加一行删除过期的清理日志:find /var/log -name "cleanup_log.log*" -mtime +30 -delete。

验证清理效果和定时任务状态

手动执行脚本看看效果:

bash /home/your_user/clean_logs.sh
# 然后检查磁盘空间
 df -h

如果空间释放了说明脚本没问题。
再检查定时任务是否正常调度:

# 查看 crond 服务是否运行
systemctl status crond
# 查看任务执行记录(CentOS 系列)
grep "clean_logs" /var/log/cron
# 或者查看自己写的日志文件
cat /var/log/cleanup_log.log

如果一切正常,你的服务器就拥有了自动化的日志清理能力,再也不用半夜爬起来手动删日志了。
记得隔一段时间回去检查一下清理的粒度是否合适,根据实际磁盘增长速率调整保留天数。

如果你正在处理磁盘空间爆满自动清理无用日志定时任务,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
数据库主从同步中断故障排查修复方案
下一篇
多站点批量申请免费SSL证书宝塔自动化教程
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意