crontab 定时任务教程:让命令到点自动执行
摘要
cron 是 Linux/macOS 上最常用的定时任务工具,可以让命令在指定时间自动执行。本教程依据 crontab(5) 官方手册,详细介绍 crontab 的编辑与查看、cron 表达式的五字段格式、特殊符号(* , - /)与快捷写法(@daily 等),并结合 rsync 实现全自动备份。
crontab 定时任务教程:让命令到点自动执行
cron 是 Linux/macOS 上最常用的定时任务工具,可以让你设置在某个固定时间自动执行的命令或脚本,比如每天凌晨备份数据库、每周清理日志、定时同步文件等。
本文内容依据 crontab 官方手册(crontab(5))整理。
一、cron 是什么
cron 是一个后台守护进程(daemon),它会按照你配置的时间表,周期性地去执行任务。与之配套的有两个关键概念:
crontab:存放每个用户定时任务表的文件,也是管理这些任务的命令名
cron 表达式:用来描述"什么时候执行"的语法
二、基本用法
查看当前用户的定时任务:
编辑(创建/修改)当前用户的定时任务:
第一次执行 crontab -e 会让你选择一个编辑器(通常是 nano 或 vim)。
删除当前用户的所有定时任务(慎用):
管理 root 的任务需要加
sudo:sudo crontab -e编辑的是 root 的定时任务表。
三、cron 表达式的格式
cron 表达式由5 个时间字段 + 1 个命令组成,每行一条任务:
5 个时间字段依次为:
字段 | 含义 | 取值范围 |
|---|---|---|
第 1 个 | 分钟 | 0 - 59 |
第 2 个 | 小时 | 0 - 23 |
第 3 个 | 日 | 1 - 31 |
第 4 个 | 月 | 1 - 12 |
第 5 个 | 星期 | 0 - 7(0 和 7 都代表周日) |
常见的写法
四、特殊符号
符号 | 含义 | 示例 |
|---|---|---|
| 任意值,每个都匹配 |
|
| 列举多个值 |
|
| 区间 |
|
| 步进 |
|
组合示例:
五、几个常用的快捷写法
除了 5 字段表达式,cron 还提供了一些预定义的关键词(部分系统支持):
快捷词 | 等价表达式 | 含义 |
|---|---|---|
|
| 每小时 |
|
| 每天 |
|
| 每周 |
|
| 每月 |
| — | 开机时执行 |
示例:
六、注意事项
路径要写绝对路径:cron 执行时的环境变量和普通登录 shell 不同,
PATH可能非常有限,所以命令里的脚本、程序最好写成绝对路径,例如用/usr/bin/python3而不是python3。命令要能静默执行:cron 没有交互终端,命令里不能有需要手动确认的交互操作。
日志输出:默认情况下 cron 会把输出通过邮件发给用户。如果想关掉,可以在命令末尾重定向:
bash这样标准输出和错误输出都被丢弃。更推荐的做法是重定向到日志文件:
bash修改后自动生效:用
crontab -e保存后不需要重启服务,任务立刻生效。脚本要有执行权限:如果写的是
.sh脚本,记得chmod +x backup.sh。
七、配合 rsync 做自动备份
结合上一篇 rsync 教程,可以轻松实现定时自动备份。例如每天凌晨 2 点把文档目录同步到备份盘:
八、总结
需求 | cron 表达式 |
|---|---|
每天某时刻 |
|
每周某天某时刻 |
|
每月某天某时刻 |
|
每 N 分钟 |
|
每 N 小时 |
|
cron 表达式其实只需要记住"分、时、日、月、星期"这个顺序,再结合 *、,、-、/ 四个符号就能应对绝大多数定时需求。配合 rsync、脚本等工具,就能搭建出全自动的备份与维护系统。
相关文章
暂无相关文章
