磁盘满自动清理日志定时任务宝塔部署

服务器跑了一段时间后,最容易被忽略的“磁盘杀手”就是各种应用日志。
如果不加干预,access.log、error.log 这类文件能轻松吃掉好几十 GB,直到磁盘满了网站打不开、SSH 登不进去。
本文就针对宝塔面板环境,带零基础用户从零部署一个“磁盘满自动清理日志定时任务”,以后再也不用手动去删日志。

第一步:确认磁盘快满的“元凶”是谁

登录宝塔面板,在左边栏点击“监控”或者直接看首页的磁盘使用率。
如果发现磁盘使用超过 80%,就需要找出哪些目录在膨胀。

在宝塔的“文件”功能里,重点查看这几个常见日志存放目录:

  • www/wwwlogs/ – Nginx / Apache 访问日志和错误日志
  • www/server/panel/logs/ – 宝塔面板自身日志
  • var/log/ – 系统日志(部分环境会挂载到不同位置)

du -sh * 命令可以快速看每个文件夹的总大小,但宝塔文件页面也支持直接右键查看目录统计,新手更友好。

第二步:编写一个安全的日志自动清理脚本

在宝塔面板中,点击左侧“文件”进入 /root/ 目录(或者其他你喜欢的路径),新建一个文件,命名为 clean_logs.sh
把以下内容粘贴进去:

#!/bin/bash
# 保留最近 7 天的日志文件,7 天前的自动删除
LOG_DIRS=(
    "/www/wwwlogs"
    "/www/server/panel/logs"
)

for dir in "${LOG_DIRS[@]}"; do
    if [ -d "$dir" ]; then
        find "$dir" -type f -name "*.log" -mtime +7 -exec rm -f {} \;
        echo "[$dir] 已清理超过 7 天的日志文件。"
    else
        echo "目录 $dir 不存在,跳过。"
    fi
done

脚本说明

  • LOG_DIRS 数组里填你想清理的日志目录,可以根据自己的实际路径修改。
  • -mtime +7 表示删除修改时间在 7 天之前的文件。你也可以改成 +3+14
  • -exec rm -f {} \; 是删除动作,不要轻易改成 rm -rf,因为加了 -type f 只删文件,安全。

保存后,在“文件”里右键该脚本 → “权限” → 设置为 755(可执行)。
或者用终端执行 chmod +x /root/clean_logs.sh

第三步:利用宝塔计划任务自动执行清理

  1. 进入宝塔面板左侧“计划任务”。
  2. 点击“添加任务” → 任务类型选择 Shell脚本
  3. 任务名称写“自动清理过期日志”。
  4. 执行周期:每天,时间选凌晨 3:00(业务低峰期)。
  5. 脚本内容直接填写:bash /root/clean_logs.sh(注意路径和你存放的位置一致)。
  6. 点击“添加”即可。

添加后可以立即“执行”一次测试效果。

避坑指南与高频问题

1. 脚本执行后日志文件还在?
检查两件事:脚本权限是否 755?脚本里写的目录路径是否真实存在?可以用命令 ls -ld /www/wwwlogs 确认。

2. 删了日志但磁盘空间没释放?
可能有些文件被进程锁定,比如正在写入的 access.log。解决方法:修改脚本为 find ... -mtime +7 -exec truncate -s 0 {} \; 只清空内容不删文件。但注意会丢失旧日志。稳妥做法是设置日志轮转(logrotate),但作为快速方案,可以先 kill 进程再删(不推荐)。

3. 想保留最近 N 天的日志,但不确定 N 值?
可以先设置 +30 保留一个月,运行一周后观察磁盘变化再调整。

4. 宝塔计划任务里如何查看执行日志?
在计划任务列表里,点击对应任务的“日志”按钮,可以看到上次执行的标准输出和错误。

5. 除了日志,还有哪些地方容易吃掉空间?
Nginx 的临时文件(/tmp)、旧备份文件(/www/backup)、Docker 日志(需单独配置)等。建议定期检查。

验证清理效果

首次手动执行计划任务后,回到“文件”中查看日志目录大小是否减少。
或者用命令 df -h 看磁盘使用率。
如果原本 90%,清理后降到 70~80%,说明脚本生效。

也可以模拟一个旧日志文件来测试:touch -t 202301010000 /www/wwwlogs/test_old.log 然后再执行脚本,看该文件是否被删除。

总结

通过宝塔面板的“计划任务”配合一个简单的 shell 脚本,就能实现“磁盘满自动清理日志定时任务部署”。
对零基础用户来说,关键点就三个:找到日志目录、写出正确的 find 删除命令、设置好执行周期。
以后哪怕日志再疯狂增长,系统也能自动腾出空间,再也不用半夜被磁盘报警吵醒。
如果你觉得 7 天太短或太长,直接改脚本里的 +7 数字就行。
遇到异常时,先看计划任务的日志输出,再对照避坑部分排查。

分享到:
上一篇
老旧TLS协议拦截浏览器访问Nginx修复脚本
下一篇
长尾关键词矩阵搭建提升谷歌自然搜索流量
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意