Linux cron 定时任务实操:每天备份、每周清理、每月巡检一次讲清

举报
yd_236639601 发表于 2026/10/31 00:53:11 2026/10/31
【摘要】 用 cron 把每天备份、每周清理、每月巡检交给系统自动做:讲清五个时间字段、给出可直接用的配置,并提醒环境变量、百分号、权限和时区四个常见坑,最后附验证清单。

每天凌晨两点备份、每周清理旧日志、每月巡检一次,这些重复劳动最适合交给 cron。本文用一套可直接落地的配置,讲清 cron 的写法、验证方法和四个最常见的坑。

一、先记住五个字段

crontab 一行就是一个任务,格式是:分 时 日 月 周 命令。星号表示每,斜杠表示每隔,逗号表示列举,横杠表示范围。例如 30 2 * * * 表示每天 2 点 30 分;0 9 * * 1 表示每周一 9 点;0 0 1 * * 表示每月 1 号零点。先把这五个位置对齐,再写命令,就不容易写错。

二、进入自己的任务表

执行 crontab -e 进入编辑,crontab -l 查看当前任务,crontab -r 会删除全部任务,操作前务必先备份。建议把任务表也存一份到代码仓或文档里,换机器时直接恢复。确认 cron 服务在运行,不同发行版服务名略有差别,可用 systemctl status 加服务名查看。

三、实操一:每天凌晨备份

先写一个备份脚本,里面用绝对路径,压缩网站目录并按日期命名,保留最近七天。给脚本加可执行权限,然后在 crontab 里写一行:30 2 * * * 备份脚本的绝对路径,并把标准输出和错误都追加到备份日志里。输出重定向到日志很关键,否则失败时无从查起。

四、实操二:每周清理与每月巡检

每周日凌晨清理 30 天前的临时文件和旧日志,写法是 0 3 * * 0 加清理命令。每月 1 号早上做一次巡检,写法是 0 8 1 * * 加巡检命令,把磁盘用量和服务状态写入巡检报告。清理类任务先用打印模式试跑一遍,确认删的是目标文件再换成真正删除,这是避免误删的底线。

五、四个最常见的坑

第一,环境变量。cron 的环境比交互终端小得多,常用命令路径可能不在其中,所以命令和脚本里一律用绝对路径,必要时在脚本开头显式声明路径。第二,百分号。crontab 里百分号有特殊含义,日期里的百分号要转义,或者把日期逻辑放进脚本。第三,权限。任务以哪个用户身份运行,文件归属和可读权限就按谁算,先用该用户手动跑一遍脚本再交给 cron。第四,时区。服务器时区决定了任务实际触发时间,先用日期命令核对一次,别按本地时间想当然。

六、验证清单

改完先用查看命令核对任务表,再等一次触发或把时间临时改近验证。查看日志可用系统日志命令过滤 cron 关键字,或用 journalctl 查看 cron 服务当天的日志。日志里有执行记录、脚本日志里有结果,两边对上才算真正跑通。如果任务没跑,按服务状态、时间字段、路径、权限、日志这个顺序排查,九成问题都在其中。

把备份、清理、巡检三类任务各配一条,cron 就从概念变成了每天为你值班的助手。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。