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

相关推荐
lifewange11 分钟前
Nginx + Kafka 可编程精细控制 完整版(可直接落地运行)
运维·nginx·kafka
hweiyu0040 分钟前
Linux命令:ip6tables
linux·运维·服务器
数字化顾问43 分钟前
(122页PPT)企业数字化IT架构蓝图规划设计方案(附下载方式)
java·运维·架构
ITyunwei09871 小时前
灾难恢复与业务连续性:如何确保天灾人祸下,业务也能“屹立不倒”?
运维·服务器
weixin_428005301 小时前
C#调用 AI学习从0开始-第1阶段(基础与工具)-第2天Prompt工程基础
人工智能·学习·c#·prompt
Promise微笑1 小时前
2026电缆故障定位仪:缆故障定位仪精准选型与高效避坑指南
运维·人工智能·重构
爱喝水的鱼丶1 小时前
SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行
运维·服务器·数据库·学习·sap·abap
学术小李2 小时前
VSCode上传文件到服务器
服务器·vscode·sftp·数据上传
red_redemption2 小时前
自由学习记录(186)
学习
hweiyu002 小时前
Linux命令:nmtui
linux