千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  Linux定时任务调度机制是怎么样的?

Linux定时任务调度机制是怎么样的?

来源:千锋教育
发布人:lxl
时间: 2023-03-24 14:36:06

  一. 前言

  在求职过程中,有过面试经历的小伙伴们都知道,企业对linux的考察还是蛮频繁的。作为java开发程序员,在企业中我们的服务器都是在linux环境中部署的,所以熟练使用linux已经成为企业招聘人才的基本需求。但很多小伙伴在学习中很少使用linux,导致在面试中被问到linux时屡屡翻车,所以文哥专门收集了自己班级的学员,在面试时与linux相关的题目。今天就以任务调度为例,来给大家谈谈linux中的定时任务调度。

  二. 什么是定时任务调度

  什么是任务调度?这么理解的,就是在linux操作系统中,需要定时或定期执行的任务。这些任务可能需要周而复始的执行,也可能是到点执行,只执行1次。那么这些任务有哪些呢?我做了两个分类:

  第一:系统任务,有些重要的工作必须周而复始的执行,比如病毒扫描。

  第二:个别用户的工作,个别用户希望执行某些程序,比如对mysql数据库的备份。

  搞清楚了任务调度的基本概念之后,linux是如何实现任务调度的呢?这里主要有两个命令需要大家掌握,一个是crontab命令,还有一个是at指令。

  三. crontab指令实现任务调度

  crontab作用

  首先我们来看下面这张图,来理解crontab指令的作用:

Linux定时任务调度机制

  基本用法

  crontab基本语法:crontab [选项]

  常用选项:

  -e: 编辑定时任务

  -l:查询定时任务

  -r:删除当前用户的所有定时任务

  案例需求

  假如我们想创建一个定时任务,可以将etc目录下面的文件列表查询出来,追加到/tmp/etc.txt文件中,并每分钟执行1次。

  [root@xq100 tmp]# crontab -e

  输入任务调度内容:

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

  然后按esc键,保存并退出。

  我们在/tmp下面查看,是否存在etc.txt。我们发现存在的。

Linux定时任务调度机制

 如果我们把这个文件删除,一分钟之后,这个文件又会被创建出来。

  [root@xq100 tmp]# rm -f etc.txt

  [root@xq100 tmp]# date

  Mon Aug 29 21:46:52 CST 2022

  [root@xq100 tmp]# date

  Mon Aug 29 21:47:01 CST 2022 #过去了1分钟

  [root@xq100 tmp]# ll

  total 1188

  -rw-r--r--. 1 root root 16802 Aug 29 21:47 etc.txt # 删除的文件又出现了 因为1分钟之后,任务调度又出现了

  4. crontab任务调度规则

Linux定时任务调度机制

  5. crondtab任务调度实例

  下面我们通过几个案例,来进一步理解crond任务调度命令。

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

  [root@xq100 tmp]# */1 * * * * date >> /tmp/mydate.txt

  案例2:每隔1分钟,将将当前的日期和日历都追加到/home/mycal.txt文件中。

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

  [root@xq100 home]# cd /home

  [root@xq100 home]# vim my.sh

  在my.sh里面编辑:

  date >> /home/mycal.txt

  cal >> /home/mycal.txt

  按ESC,保存并退出。但是我们发现这个脚本,root没有执行权限。

Linux定时任务调度机制

  我们需要修改脚本的权限,使当前用户root能够对脚本进行执行。

  [root@xq100 home]# chmod u+x my.sh

Linux定时任务调度机制

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

  [root@xq100 tmp]# crontab -e

Linux定时任务调度机制

  保存并退出即可。我们来查看效果:

图片5

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

  第一步: crontab -e

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

  还有其他几个任务调度指令,大家了解一下:

  crontab -r :终止任务调度;

  contab -l :列出当前有哪些任务调度;

  service crond restart [重启任务调度]。

  四. at指令实现任务调度

  at命令作用

  文哥先给大家讲解一下at指令的含义和作用:

  at命令是一次性定时执行任务计划,at的守护线程atd以后台的模式运行,检查作业队列来运行。

  默认情况下,atd守护线程每60秒检查作业队列,有作业时会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。

  at命令是一次性定制的计划任务,执行完一个任务后就不再执行此任务了。

  在使用at命令的时候,一定要保证atd进程的启动,可以用相关指令来查看(ps -ef | grep atd)。

Linux定时任务调度机制

  下面我们用一幅图来说明at任务调度机制:

Linux定时任务调度机制

  at任务调度案例

  常用选项

Linux定时任务调度机制

  语法格式:

  at [选项] [时间]

  at > 命令(输入两次 Ctrl + D)

  释义:

  第一行:at 指令输入结束后,回车到下一行输入指令

  第二行:开头的 at> 无需输入,是系统自动添加的

  命令输入结束后:Ctrl + D 结束命令的输入,要输入两次

  两天后的下午6点执行ll命令

Linux定时任务调度机制

  使用atq命令,查看系统中有没有执行工作任务

  [root@xq100 home]# atq

  1 Wed Aug 31 17:00:00 2022 a root

  2 Wed Aug 31 18:00:00 2022 a root

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

  [root@xq100 home]# at 5pm tomorrow

  at> date > /home/date100.log

  job 4 at Tue Aug 30 17:00:00 2022

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

  [root@xq100 home]# at now + 2 minutes

  at> date > /home/date200.log

  job 5 at Mon Aug 29 23:24:00 2022

  使用atq查看队列任务:

Linux定时任务调度机制

  2分钟之后,我们再次查看队列任务:

Linux定时任务调度机制

  我们发现5号任务没有了,因为5号任务被执行了。所以被移出队列了。这就是为什么使用at指令执行定时任务,任务只执行1次的原因!

  删除已经设置好的任务

  [root@xq100 home]# atq

  1 Wed Aug 31 17:00:00 2022 a root

  2 Wed Aug 31 18:00:00 2022 a root

  4 Tue Aug 30 17:00:00 2022 a root

  [root@xq100 home]# atrm 1 # 删除1号任务

  [root@xq100 home]# atq

  2 Wed Aug 31 18:00:00 2022 a root

  4 Tue Aug 30 17:00:00 2022 a root


声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>