Linux 系统定时任务:crontab 典型应用场景练习

目录

一、Linux小实验

[二、crontab 内容复习](#二、crontab 内容复习)

(1)前言

[(2)crond 与 crontab 的关系与区别](#(2)crond 与 crontab 的关系与区别)

(3)crontab的使用

[① 安装crond 服务](#① 安装crond 服务)

[② crontab 命令详解](#② crontab 命令详解)

[③ 定时任务的书写格式](#③ 定时任务的书写格式)

三、实验开始

四、答案总结如下:

五、写入定时任务

1、写入定时任务代码

2、查看定时任务

六、实验总结


一、Linux小实验

本次实验要求:

  1. 在4月份的周一到周三的上午11点执行脚本

  2. 每天早上7点到上午11点且每2小时执行脚本

  3. 每天早上6点执行脚本脚本

  4. 每周六凌晨4点执行脚本

  5. 每周六凌晨4点05执行脚本

  6. 每天早上8:40执行脚本

  7. 在每天早上10:31且之后每隔2小时执行脚本

  8. 每周一到周五2:00执行脚本

  9. 每周一到周五8:00和9:00执行脚本

  10. 每天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

++复习到这里相比你已经对定时任务了如执掌了,就差一场实验了,那现在我们开始定时任务实验。++


三、实验开始

回顾实验要求:

  1. 在4月份的周一到周三的上午11点 执行脚本

  2. 每天早上7点到上午11点且每2小时 执行脚本

  3. 每天早上6点 执行脚本

  4. 每周六凌晨4点 执行脚本

  5. 每周六凌晨4点05 执行脚本

  6. 每天早上8:40执行脚本

  7. 在每天早上10:31且之后每隔2小时直至23点 执行脚本

  8. 每周一到周五凌晨2:00 执行脚本

  9. 每周一到周五8:00和9:00 执行脚本

  10. 每天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 下循环定时任务的实现方法,为后续自动化脚本执行打下了扎实基础。

相关推荐
磊 子2 小时前
Redis详解
linux·数据库·redis·缓存
_kerneler2 小时前
LUKS学习笔记(1)
网络·笔记·学习
EveryPossible2 小时前
提示练习内容2
服务器
123过去2 小时前
sucrack使用教程
linux·网络·测试工具·安全
姚永强2 小时前
在虚拟机添加磁盘和自动挂载
运维
弘毅 失败的 mian2 小时前
Linux 进程属性详解
linux·运维·服务器·经验分享·笔记
AI成长日志2 小时前
【实用工具教程专栏】GitHub Actions自动化工作流入门(基础篇)
运维·自动化·github
jnrjian2 小时前
restore archivelog RAC thread from sequence logseq
服务器·数据库
IAUTOMOBILE2 小时前
Ubuntu 22.04 下 NVIDIA H100 服务器完整部署攻略:驱动、Fabric Manager 与 Container Toolkit 配置
服务器·ubuntu·fabric