【Linux操作系统 | 第11篇】Linux定时任务调度

在这里插入图片描述

文章目录

  • 🥝crond周期性任务调度
    • 🍂语法格式
    • 需求:创建一个定时任务,将etc目录下面的文件列表查询出来,追加到/tmp/etc.txt文件中,并每分钟执行一次
  • 📖crond任务调度的时间规则
    • 🍋‍🟩占位符说明
    • 🍋‍🟩特殊符号说明
      • 特殊时间执行示例 🧾
      • crond任务调度案例
        • 案例1:每隔1分钟,将当前的日期信息追加到/tmp/mydate.txt文件中。
        • 案例2:每隔1分钟,将将当前的日期和日历都追加到/home/mycal.txt文件中
          • ⚠️我们需要修改脚本的权限,使当前用户root能够对脚本进行执行:
        • 案例3:每天凌晨2点,将mysql数据库testdb,备份到文件中。
    • 🔜 .sh后缀文件说明
  • 🥝at一次性任务调度
    • 🍋‍🟩at任务机制简单介绍
    • 🍋‍🟩at时间定义
    • at任务调度案例
      • 🍂语法格式
      • 🍂at常用选项
    • 栗子🌰
      • 案例1:两天后的下午6点执行ll命令
      • 案例2:明天17点钟,输出时间都指定文件内,比如/home/date100.log
      • 案例3:2分钟后,输出时间到指定文件内,比如/home/dat200.log
      • 案例4:删除已经设置好的1号任务
      • 案例5:-m发送邮件指令的使用

🥝crond周期性任务调度

定时任务调度:每隔指定的时间,执行特定的命令或程序

任务调度的分类:

  1. 系统任务:有些重要的工作必须周而复始的执行 比如病毒扫描 。
  2. 个别用户工作: 个别用户希望执行某些程序,比如对mysql数据库的备份。

在这里插入图片描述

🍂语法格式

基本语法:crontab [ 选项 ]
常用选项:
-e : 编辑定时任务
-l :查询定时任务
-r :删除当前用户的所有定时任务
-l :列出当前有哪些任务调度

sudo systemctl stop crond :终止任务调度
service crond restart :重启任务调度

需求:创建一个定时任务,将etc目录下面的文件列表查询出来,追加到/tmp/etc.txt文件中,并每分钟执行一次

[root@xq100 tmp]# crontab -e

输入任务调度指令【具体语法在下面】:

*/1 * * * * ls -l /etc/ > /tmp/etc.txt

然后按esc键,保存并退出。
我们在/tmp下面查看,是否存在etc.txt。我们发现存在。
在这里插入图片描述
如果我们把这个文件删除,一分钟之后,这个文件又会被创建出来
在这里插入图片描述

📖crond任务调度的时间规则

crontab 的时间字段从左到右依次为:

分钟 小时 日期 月份 星期  要执行的命令

🍋‍🟩占位符说明

项目含义范围
第一个 ’ * ’一个小时当中的第几分钟0 - 59
第二个 ’ * ’一天当中的第几个小时0 - 23
第三个 ’ * ’一个月当中的第几天1 - 31
第四个 ’ * ’一个年当中的第几个月1 - 12
第五个 ’ * ’一个周当中的星期几0 - 7(0和7都代表星期日)

🍋‍🟩特殊符号说明

特殊符号含义
*代表任何时间,比如第一个’ * '就代表1小时中每分钟都执行1次的意思
,代表不连续的时间,比如"0 8,12,16 * * * "代表一天中的8点过0分,12点过0分,16点过0分都会执行1次
-代表连续的时间范围,比如" 0 5 * * 1-6 " 就代表星期一到星期六的凌晨5点过0分都会执行
*/n代表每隔多久执行1次,比如" */10 * * * * " 就代表每隔10分钟就执行1次命令

特殊时间执行示例 🧾

时间指令含义
45 22 * * *每天在22时45分执行任务
0 17 * * 1每周一的17点过0分执行任务
0 5 1,15 * *每月的1号和15号的凌晨5点钟执行任务
40 4 * * 1-5每周1-到周5的凌晨4:40分执行任务
*/10 4 * * *每天的凌晨4点,每隔10分钟就执行1次任务

crond任务调度案例

案例1:每隔1分钟,将当前的日期信息追加到/tmp/mydate.txt文件中。

命令:

[root@hygge tmp]#  */1 * * * * date >> /tmp/mydate.txt
案例2:每隔1分钟,将将当前的日期和日历都追加到/home/mycal.txt文件中

分析:由于现在有获取当前的日期和日期两个指令,所以我们可以将这两条命令定义在脚本里面。然后再通过定时任务调度去执行脚本即可

[root@hygge home]# cd /home
[root@hygge home]# vim my.sh

在my.sh里面编辑:

date >> /home/mycal.txt
cal >> /home/mycal.txt

按ESC,保存并退出。但是我们发现这个脚本,root没有执行权限。
在这里插入图片描述

⚠️我们需要修改脚本的权限,使当前用户root能够对脚本进行执行:
[root@hygge home]# chmod 774 my.sh

在这里插入图片描述

接下来我们需要动态执行脚本:

[root@hygge tmp]# crontab -e

在这里插入图片描述

保存并退出即可。我们查看效果:
在这里插入图片描述

案例3:每天凌晨2点,将mysql数据库testdb,备份到文件中。
(提示:备份数据库的指令为 mysqldump-u root -p密码 数据库名称 > /home/文件名称)

第一步: crontab -e
第二步:0 2 * * * mysqldump -u root -proot testdb > /home/db.bak

🔜 .sh后缀文件说明

在 Linux 里,.sh文件属于 shell 脚本文件 。其作用是把一系列 Linux 命令或者 shell 命令整合起来,进而达成特定的任务。一般编写给定时任务调度执行的脚本文件都用.sh作为后缀

🥝at一次性任务调度

🍋‍🟩at任务机制简单介绍

  1. at命令是一次性定时执行任务计划,at的守护线程atd以后台的模式运行,检查作业队列来运行。
  2. 默认情况下,atd守护线程每60秒检查作业队列,有作业时会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
  3. at命令是一次性定制的计划任务,执行完一个任务后就不再执行此任务了。
  4. 在使用at命令的时候,一定要保证atd进程的启动,可以用相关指令来查看atd进程 ps -ef | grep atd

在这里插入图片描述
下面我们用一幅图来说明at任务调度机制:
在这里插入图片描述

🍋‍🟩at时间定义

格式含义举例
HH:MM当天 HH:MM 执行,若当天时间已过,则在明天 HH:MM 执行当天 4:00 (若超时则为明天 4:00)
英文粗略时间单词midnight(午夜,00:00)、noon(中午,12:00)、teatime(下午茶时间,16:00) tomorrow(明天)midnight、noon、teatime
英文月名A 日期B [年份C]C年A月B日执行在 2018 年 1 月 15 日执行:January 15 2018
日期时间戳形式绝对计时法 : 时间+日期
时间:HH:MM
日期:MMDDYY 或 MM/DD/YY 或 MM.DD.YY
在 2018 年 1 月 15 日执行:011518 或 01/15/18 或 01.15.18
now + 数量 单位相对计时法
以 minutes、hours、days 或 weeks 为单位
5 天后的此时此刻执行:now + 5 days

at任务调度案例

🍂语法格式

at [ 选项 ] [ 时间 ]
at > 命令(填写完后输入两次Ctrl + D)

释义
第一行:at 指令输入结束后,回车到下一行输入指令
第二行:开头的 at> 无需输入,是系统自动添加的
命令输入结束后:Ctrl + D 结束命令的输入,要输入两次

🍂at常用选项

常用选项含义
-V显示at命令的版本信息。
-q <队列>指定任务队列(队列名称为单个字母,如a、b等),不同队列可能有不同的优先级或特性。
-f <文件>从指定文件中读取要执行的命令,而不是在交互模式下输入。
-l (= atq命令)列出当前用户的所有待执行at任务。
-d <任务号>(= atrm命令)删除指定的at任务。
-c <任务号>查看指定at任务的具体内容(命令或脚本)。
-m当任务执行完毕后,即使没有输出,也向用户发送邮件通知。
-t <时间参数>以时间参数的形式指定任务执行时间,格式为MMDDhhmm[YY]或MM/DD/YY hh:mm。

栗子🌰

案例1:两天后的下午6点执行ll命令

[root@hygge ~]# at 6pm + 2days

运行结果:
在这里插入图片描述

案例2:明天17点钟,输出时间都指定文件内,比如/home/date100.log

[root@hygge ~]# at 5pm tomorrow

运行结果:
在这里插入图片描述

案例3:2分钟后,输出时间到指定文件内,比如/home/dat200.log

[root@hygge ~]# at now + 2 minutes

运行结果:
在这里插入图片描述
使用atq查看队列任务:
在这里插入图片描述
2分钟之后,我们再次查看队列任务:
在这里插入图片描述
我们发现6号任务没有了,因为6号任务执行了,就从任务队列里面被移除了

案例4:删除已经设置好的1号任务

[root@hygge ~]# atrm 1

运行结果:
在这里插入图片描述

案例5:-m发送邮件指令的使用

[root@hygge home]# at -m now + 1 minutes

运行结果:
在这里插入图片描述
切记:输完指令后,按两次Ctrl+D结束


如果我的内容对你有帮助,请 点赞 评论 收藏 。创作不易,大家的支持就是我坚持下去的动力!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青衫码上行

你的鼓励将是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值