cron 是一个 Linux 下的定时执行工具,可以在无需人工干预的情况下运行作业。守护进程 cron 会读取 crontab 文件,根据配置在指定的时间执行任务。
contab 命令用来添加、删除、显示 cron 任务表。
(Ubuntu 环境)可以通过 service 命令启停 cron 服务:
service cron status # 查看 cron 服务状态
service cron start # 启动 cron 服务
service cron stop # 停止 cron 服务
service cron restart # 重启 cron 服务
service cron reload # 重新加载 cron 服务配置
crontab 命令
命令格式
crontab [-u user] file
crontab [-u user] [-l | -r | -e] [-i] [-s]
命令参数
-u
指定用户
-l
显示当前的 crontab 文件内容。
-r
删除当前的 crontab 文件内容。
-e
编辑当前的 crontab 文件内容,如果文件不存在则创建新文件。
-i
在删除 crontab 文件内容时予以提示。
crontab 文件
格式:minute hour day_of_month month day_of_week command
字段含义
字段 | 含义 |
minute | 分钟,取值范围是 (0 - 59) |
hour | 小时,取值范围是 (0 - 23) |
day_of_month | 日期,取值范围是 (0 - 31) |
month | 月份,取值范围是 (1 - 12),也可以用 jan,feb,mar,apr... 表示 |
day_of_week | 星期,取值范围是 (0 - 6),其中周日用 0 或 7 表示,也可以用 sun,mon,tue,wed,thu,fri,sat 表示 |
command | 要执行的命令 |
特殊符号含义
特殊符号 | 说明 |
* | 通配所有可能的取值 |
, | 指定取值列表,例如 1,3,5,7,9 |
- | 指定整数范围,例如 1-5 |
/ | 指定间隔频率 |
cron 表达式例子
示例 | 说明 |
*/15 * * * * | 每隔 15 分钟执行任务 |
0 */2 * * * | 每隔 2 个小时,在整点的时候执行任务 |
0 3 * * * * | 每天凌晨三点的时候执行任务 |
0 0 5,15,25 * * | 每月 5 号,15 号,25 号凌晨的时候执行任务 |
15 12 * * 1 | 每周一中午 12 点 15 分的时候执行任务 |
0,30 12-20 * * * | 每天 12:00 至 20:59 之间,在整点或半点的时候执行任务 |
实例
a) 添加 cron 任务
huey@huey-K42JE:~/huey/linux/cmdline$ echo "*/3 * * * * date >> ~/huey/linux/cmdline/cron.out" > mycron
huey@huey-K42JE:~/huey/linux/cmdline$ crontab mycron
b) 删除 cron 任务
huey@huey-K42JE:~/huey/linux/cmdline$ crontab -r
c) 显示 cron 任务
huey@huey-K42JE:~/huey/linux/cmdline$ crontab -l
*/3 * * * * date >> ~/huey/linux/cmdline/cron.out