《Linux cron 定时任务入门:让服务器自己干活》

举报
vanseny 发表于 2026/10/31 07:48:46 2026/10/31
【摘要】 很多 Linux 新手第一次接触服务器时,都会遇到这样的问题:每天凌晨要备份一次数据库、每周要清理一次日志、每隔几分钟要检查一次服务状态——难道要定闹钟手动执行吗?答案是不用。Linux 自带了一个老牌定时任务工具 cron,它就像一个不知疲倦的值班员,只要你把规则写好,它就会在约定的时间准时执行命令。 cron 是什么cron 是一个系统守护进程,名字来自希腊语 chronos(时间)。它...

很多 Linux 新手第一次接触服务器时,都会遇到这样的问题:每天凌晨要备份一次数据库、每周要清理一次日志、每隔几分钟要检查一次服务状态——难道要定闹钟手动执行吗?答案是不用。Linux 自带了一个老牌定时任务工具 cron,它就像一个不知疲倦的值班员,只要你把规则写好,它就会在约定的时间准时执行命令。

cron 是什么

cron 是一个系统守护进程,名字来自希腊语 chronos(时间)。它启动后一直在后台运行,每分钟醒来一次,检查有没有到期的任务。用户通过 crontab(cron table)来管理自己的任务表,一条规则就是一行,写好保存立即生效,不需要重启服务。

五段式时间规则

crontab 的每一行由六部分组成,前五段是时间,最后一段是要执行的命令:

分 时 日 月 周 命令

每一位置的取值范围分别是:分钟 0–59、小时 0–23、日期 1–31、月份 1–12、星期 0–7(0 和 7 都表示星期日)。几个常用符号要先记住:星号 * 表示“每一个”,逗号表示“列举”,横杠表示“范围”,斜杠表示“步长”。例如:

0 2 * * * /home/user/backup.sh

表示每天凌晨 2 点整执行备份脚本。再看一个:

*/10 * * * * /usr/bin/check-service.sh

表示每 10 分钟执行一次服务检查。组合起来也很直观,0 9-18 * * 1-5 就是工作日的每小时整点执行。

上手三步

第一步,编辑自己的任务表,执行 crontab -e。第一次打开可能会让你选编辑器,选自己熟悉的 nano 或 vim 即可。

第二步,把规则写进去,保存退出。建议新手先写一条一分钟后执行的测试任务,比如 * * * * * echo "cron test" >> /tmp/cron-test.log,等一分钟看日志文件里有没有内容,确认规则生效后再换成正式任务。

第三步,用 crontab -l 查看当前任务表,确认无误。删除全部任务用 crontab -r,但要谨慎,这个操作没有二次确认。

新手最容易踩的坑

第一,环境变量。cron 执行时的环境和交互式 shell 不一样,PATH 很短,python、node 这类命令可能找不到。稳妥的做法是在脚本里写命令的绝对路径,或者在 crontab 开头先定义 PATH。

第二,相对路径。cron 的工作目录一般是用户家目录,脚本里用到的文件路径最好都写绝对路径,否则换个目录执行就可能找不到文件。

第三,没有输出就等于没有反馈。cron 默认会把命令的输出发邮件给本机用户,但很多服务器没有配邮件服务,输出就悄悄丢了。建议每条任务都显式重定向日志,例如 >> /var/log/backup.log 2>&1,出问题时有据可查。

第四,权限问题。需要 root 权限的操作要放到 root 用户的 crontab(用 sudo crontab -e 编辑),或者用系统级任务文件 /etc/crontab,不要图省事给脚本加过大的权限。

从定时任务到自动化习惯

掌握 cron 之后,很多重复劳动都可以交给它:凌晨备份数据库、定期清理过期日志、定时同步文件、每小时拉取一次数据。它的规则简单到可以背下来,但带来的时间收益是实打实的。对于刚接触 Linux 的朋友,建议先从一条备份任务开始,把“手动执行”变成“自动执行”,这是走向运维自动化的第一步。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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