crontab 是 Linux 中用于管理和执行定时任务的工具,支持分钟粒度的命令执行。
操作系统会默认安装此服务工具,并启动 crond 进程,每分钟定期检查是否有需要执行的任务,然后自动执行。
Linux 的任务调度分为系统任务调度和用户任务调度。
crond 任务
# 查看服务状态
systemctl status crond
# 开启服务
systemctl start crond
# 关闭服务
systemctl stop crond
# 重启服务
systemctl restart crond
# 重新载入配置
systemctl reload crond
系统任务调度
系统任务调度保存在 /etc/crontab 中,需要打开进行编辑然后保存。
用户任务调度
用户任务调度保存在 /var/spool/cron/crontabs/ 下,每个用户区分一个文本文件。
可以使用 crontab 命令编辑和查看每个用户的定时任务。
选项:
- -e 编辑用户的定时任务
- -l 列出用户的定时任务
- -r 删除用户的定时任务
- -u <user> 指定用户,需要带有其他选项
配置
一个定时任务的配置分为以下几段:
minute hour day month week command
分别表示:
- minute:分钟,可以是 0-59
- hour:小时,可以是 0-23
- day:日期,可以是 1-31
- month:月份,可以是 1-12
- week:星期几,可以是 0-7,0 和 7 表示星期日
- command:要执行的命令或脚本
以上时间字短可以使用的特殊字符:
- 星号(*):表示所有值,如分钟的 * 表示每分钟
- 横杠(-):表示整数范围,如 0-9 表示 0 到 9 的数字范围
- 斜杠(/):指定时间频率,如 */2 表示偶数范围,1/2 表示奇数范围
- 逗号(,):隔开多个范围值,如 10,30,50 表示匹配三个值,0-5,*/10 表示两端范围的合集
实例
# 每分钟执行一次
* * * * * command
# 在上午8点到11点的第3和15分钟执行
3,15 8-11 * * * command
# 每个月1日的1点开始的每4小时执行
* 1/4 1 * * command