CMS定时任务配置,自动清理缓存与日志
很多CMS站点运行一段时间后,缓存文件会占满磁盘,日志文件也会越滚越大,手动清理既麻烦又容易忘。
本文面向零基础用户,讲清如何通过CMS定时任务配置,自动清理缓存与日志,让服务器保持干净。
先搞明白要清理什么
动手之前,先通过SSH连上服务器,确认缓存目录和日志目录的位置。
常见CMS的路径如下,实际以你使用的程序为准:
- 缓存目录:通常位于
/www/wwwroot/你的站点/runtime/cache或/www/wwwroot/你的站点/data/cache - 日志目录:常见为
/www/wwwroot/你的站点/runtime/log或/www/wwwroot/你的站点/data/log
用 du -sh 命令查看当前占用:
du -sh /www/wwwroot/你的站点/runtime/cache
du -sh /www/wwwroot/你的站点/runtime/log
缓存可以随时删,程序会自动重建;
但日志删除前建议先确认没有正在排查的问题。
写一个可复用的清理脚本
在 /www/wwwroot/你的站点/ 下新建 clean.sh,内容如下:
#!/bin/bash
# 清理缓存
find /www/wwwroot/你的站点/runtime/cache -type f -mtime +1 -delete
# 清理7天前的日志
find /www/wwwroot/你的站点/runtime/log -type f -mtime +7 -delete
# 清理空目录
find /www/wwwroot/你的站点/runtime/cache -type d -empty -delete
-mtime +1 表示只删除修改时间超过1天的文件,避免把正在使用的缓存删掉。
保存后赋予执行权限:
chmod +x /www/wwwroot/你的站点/clean.sh
先手动跑一次,确认没有报错:
bash /www/wwwroot/你的站点/clean.sh
脚本能手动执行成功,是配置定时任务的前提。
两种配置定时任务的方式
方式一:宝塔面板计划任务
如果你用的是宝塔面板,操作最直观:
- 登录宝塔面板,左侧菜单点击“计划任务”
- 任务类型选择“Shell脚本”
- 任务名称填“CMS清理缓存日志”
- 执行周期选“每天”,时间建议凌晨3点
- 脚本内容填
bash /www/wwwroot/你的站点/clean.sh - 点击“添加任务”
添加后可在列表点“执行”测试,日志会显示执行结果。
方式二:Linux crontab
没有面板或习惯命令行的,直接用 crontab -e 编辑:
crontab -e
加入一行:
0 3 * * * /bin/bash /www/wwwroot/你的站点/clean.sh >> /tmp/clean.log 2>&1
这行表示每天凌晨3点执行脚本,并把输出追加到 /tmp/clean.log,方便日后排查。
保存退出后,用 crontab -l 查看是否写入成功。
两种方式选一种即可,不要同时配置,否则可能重复执行。
容易踩坑的几个地方
- 路径写错:脚本里的站点路径必须和实际一致,建议先用
pwd确认。 - 权限不足:crontab 执行时环境变量少,脚本里尽量用绝对路径,命令前可加
/bin/bash。 - 误删日志:如果站点正在排查故障,先把
-mtime +7改成+30,保留更久。 - 缓存删太勤:高频访问站点不建议每天清缓存,可改为每周一次,减少重建开销。
- 宝塔任务没执行:检查面板计划任务服务是否正常运行,或改用 crontab 测试。
验证是否真的生效
配置完成后,建议做一次完整验证:
- 手动在缓存目录创建一个测试文件:
touch /www/wwwroot/你的站点/runtime/cache/test.tmp - 把清理脚本的
-mtime +1临时改成-mtime +0,手动执行一次 - 用
ls查看test.tmp是否被删除 - 确认无误后,把参数改回
+1,恢复正式配置
另外可以第二天检查 /tmp/clean.log 是否有输出,或对比清理前后的目录大小:
du -sh /www/wwwroot/你的站点/runtime/cache
如果目录大小明显下降,说明定时任务已经正常工作。
常见疑问
清理缓存会影响网站访问吗? 首次访问会稍慢,因为程序需要重建缓存,之后恢复正常。
建议在访问低谷期执行。
日志可以直接全部删除吗? 不建议。
日志是排查问题的依据,保留最近7到30天比较稳妥,除非磁盘已经告急。
定时任务没执行怎么排查? 先看 /tmp/clean.log 有没有报错,再检查 crontab 时间格式是否正确,最后确认脚本路径和权限。
Windows服务器怎么处理? 可以在“任务计划程序”中创建基本任务,操作选“启动程序”,程序填 bash.exe,参数填脚本路径,触发时间同样设为凌晨。
按上面步骤配置好CMS定时任务,缓存与日志就能自动清理,不用再手动操心。
建议先小范围测试,确认无误后再正式启用。