目录
[二、crontab 内容复习](#二、crontab 内容复习)
[(2)crond 与 crontab 的关系与区别](#(2)crond 与 crontab 的关系与区别)
[① 安装crond 服务](#① 安装crond 服务)
[② crontab 命令详解](#② crontab 命令详解)
[③ 定时任务的书写格式](#③ 定时任务的书写格式)
一、Linux小实验
本次实验要求:
在4月份的周一到周三的上午11点执行脚本
每天早上7点到上午11点且每2小时执行脚本
每天早上6点执行脚本脚本
每周六凌晨4点执行脚本
每周六凌晨4点05执行脚本
每天早上8:40执行脚本
在每天早上10:31且之后每隔2小时执行脚本
每周一到周五2:00执行脚本
每周一到周五8:00和9:00执行脚本
每天10:00,16:00执行脚本
++注:本实验的执行脚本指代的是 cmd++
二、crontab 内容复习
为了更好的完成实验,我们先对cron的内容复习。
(1)前言
我们之前学习过at --单一执行的定时任务**,** 但是因为只能执行一次,因此有了crontab -- 循环执行的定时任务**。** 想必大家也见过一个很相似的词 --- **crond (守护进程)。**为防止大家分不清楚这两词,这里进行拓展讲解。
(2)crond 与 crontab 的关系与区别
crond 是系统后台的守护进程,开机自动运行,会持续的读取定时任务的配置,到指定时间就会执行。
crontab是用来增删改查直接的定时任务的。
两者之间的关系:
- 用户通过crontab命令 写入定时任务;
- crond服务每分钟扫描配置,到点自动执行;
- 没有 crond 服务,crontab 配置的任务不会运行。
对比:
- crontab 是命令,crond 是服务
- crond 负责执行定时任务,crontab负责管理定时任务。
(3)crontab的使用
① 安装crond 服务
在(2)中我们讲了没有 crond 服务,crontab 配置的任务不会运行。所以我们先安装一下crond 服务。(温馨提示:在安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的),若需要安装则执行如下命令:
bash
# 安装, 注意包名写的是crontabs
[root@server ~]# yum install crontabs
# 查看crond的状态
[root@server ~]# systemctl status crond
② crontab 命令详解
bash
# 格式
crontab [-u | -l| -r | -e]
# 参数解释
-u : 指定用户执行定时任务
-l : 查看定时任务
-r : 删除定时任务
-ir : 删除定时任务前弹出确认提示
-e : 编辑定时任务
③ 定时任务的书写格式
bash
# 查看crontab 定时任务的书写格式。
root@localhost:~# cat /etc/crontab

- 写入的命令格式:每一行书写一个工作,每个工作共有6个字段
| 代表意义 | 分钟 | 小时 | 日期 | 月份 | 星期 | 命令 |
|---|---|---|---|---|---|---|
| 数字范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7(0和7表示周日) | 执行的动作 |
特殊字符解释
| 特殊字符 | 含义 |
|---|---|
| * | 任意时刻 |
| - | 表示时间范围 |
| ,(逗号) | 分割时段 |
| */数字 | 指定时间间隔的频率,如:每3分钟执行一次,*/3 |
++复习到这里相比你已经对定时任务了如执掌了,就差一场实验了,那现在我们开始定时任务实验。++
三、实验开始
回顾实验要求:
在4月份的周一到周三的上午11点 执行脚本
每天早上7点到上午11点且每2小时 执行脚本
每天早上6点 执行脚本
每周六凌晨4点 执行脚本
每周六凌晨4点05 执行脚本
每天早上8:40执行脚本
在每天早上10:31且之后每隔2小时直至23点 执行脚本
每周一到周五凌晨2:00 执行脚本
每周一到周五8:00和9:00 执行脚本
每天10:00,16:00 执行脚本
++注:本实验的执行脚本指代的是 cmd++
因为定时任务写入格式的神奇设定,因此我们看这种要求都要倒着看,然后按照时间单位的大小,从小到大排序,(分、小时、天、月份、星期)。
(1)第一题
不难看出,第一题排列为 :0分 、上午11点 、 无要求 、 4月份、星期1到星期3;
故第一题为 : 0 11 * 4 1-3 cmd
(2)第二题
依此类推,第二题排列为 :0分、早上7点到11点每两个小时、无要求、无要求、无要求;
故第二题为 :0 7-11/2 * * * (0 7 ,9,11 * * *)
(3)第三题
第三题排列为 :0分、早上六点、无要求、无要求、无要求;
故第三题为 :0 6 * * * cmd
(4)第四题
第四题排列为: 0分、早上四点、无要求、无要求、周六;
故第四题为:0 4 * * 6 cmd
(5)第五题
第五题排列为:5分、早上四点、无要求、无要求、周六;
故第五题为: 5 4 * * 6 cmd
(6)第六题
第六题排列为:40分、早上8点、无要求、无要求、无要求;
故第六题为:40 8 * * * cmd
(7)第七题
第七题排列为:31分·、上午10点到23点 每隔两小时、无要求、无要求、无要求;
故第七题为:31 10-23/2 * * * cmd
(8)第八题
第八题排列为:0分、凌晨2点、无要求、无要求、周一到周五;
故第八题为: 0 2 * * 1-5 cmd
(9)第九题
第九题排列为:0分、早上8点和9点、无要求、无要求、周一到周五;
故第九题为: 0 8,9 * * 1-5 cmd
(10)第十题
第十题排列为:0分、 早上10点和16点、无要求、无要求、无要求;
故第十题为: 0 10,16 * * * cmd
四、答案总结如下:
bash
# 答案:
1. 0 11 * 4 1-3 cmd
2. 0 7-11/2 * * * cmd
3. 0 6 * * * cmd
4. 0 4 * * 6 cmd
5. 5 4 * * 6 cmd
6. 40 8 * * * cmd
7. 31 10-23/2 * * * cmd
8. 0 2 * * 1-5 cmd
9. 0 8,9 * * 1-5 cmd
10. 0 10,16 * * * cmd
0 11 * 4 1-3 cmd
0 7-11/2 * * * cmd
0 6 * * * cmd
0 4 * * 6 cmd
5 4 * * 6 cmd
40 8 * * * cmd
31 10-23/2 * * * cmd
0 2 * * 1-5 cmd
0 8,9 * * 1-5 cmd
0 10,16 * * * cmd
五、写入定时任务
bash
# 编辑定时任务
root@localhost:~# crontab -e
1、写入定时任务代码

2、查看定时任务
bash
# 查看定时任务
root@localhost:~# crontab -l

六、实验总结
++恭喜你成功的完成了本次实验++
本次 crontab 实验主要围绕循环定时任务的写法展开,通过多种典型定时场景的实战练习,我们熟练掌握了 crontab 时间字段的规则与
*、/、,、-等符号的循环用法,能够根据不同需求,快速写出每日、间隔、周期、指定时段等各类循环定时任务,同时理清了定时任务的配置、查看与生效逻辑,完整掌握了 Linux 下循环定时任务的实现方法,为后续自动化脚本执行打下了扎实基础。