Linux学习 | 任务调度


1 crond任务调度

1.1 基本介绍

  • 任务调度:系统在某个时间定时执行特定的命令或程序

  • 任务调度分类

    ① 系统任务调度:系统某些工作需要周而复始、重复地执行,如病毒扫描、日志清理
    ② 用户任务调度:个别用户可能需要定时执行的工作,如备份数据库、用户数据备份

  • 拓展

    ① 系统任务调度的配置文件为/etc/crontab
    ② 用户自定义的任务调度需要使用crontab指令来设置,设置后产生的crontab文件会存放/var/spool/cron目录下,文件名与用户名一致

  • crond服务

    • 概述:crond是Linux系统内部一个服务/程序/软件,用于定时执行特定的命令或程序/脚本

    • 相关命令

      命令解释
      service crond status查看当前crond服务状态
      service crond start开启crond服务
      service crond stop停止crond服务
      service crond restart重启crond服务

1.2 crontab指令

  • 基本语法:crontab [选项]

  • 常用选项

    选项解释
    -ee是edit的意识,即编辑/设置/修改当前用户的定时任务
    -ll是list的意思,即列出/查看/打印/输出当前用户的全部定时任务
    -rr是remove的意思,即移除/删除当前用户的全部定时任务

    PS:使用[选项]-e后,即执行crontab -e命令,会进入类似于vim编辑器的编辑界面vim编辑器的语法在次同样适用,此时就可以将要设置的命令或程序写进入即可,保存后就会生成一个crontab文件

  • 简单测试

    • 在tom用户下,创建一个定时任务——每分钟将/home/tom目录下的信息添加到/home/tom/my-crond.txt文件中

      ① 先打开定时任务编辑界面 --> crontab -e
      ② 往编辑界面中输入该命令 --> */1 * * * * ls - l /home/tom/ > /home/tom/my-crond.txt(相当于每分钟执行一次ll /etc/ > /home/tom/my-crond.txt命令)
      在这里插入图片描述

    • 查看tom用户下所有的定时任务 --> crontab -l
      在这里插入图片描述

1.3 设置任务的具体语法

  • 概述:上面介绍的crontab命令是用来编辑、存放和管理定时任务,而具体设置定时任务需要设置任务的执行周期

  • 基本语法:设置时间 要定时执行的命令/程序/脚本

  • 设置时间的格式说明

    • 例子:以上面的测试为例,向crantab文件中输入命令——*/1 * * * * ls - l /home/tom/ > /home/tom/my-crond.txt,可以看出该命令分为两个部分,前一部分就是用于设置时间——*/1 * * * *

    • 时间格式具体解释:该格式分为5个组成部分,从左往右分别表示分钟、小时、日、月、星期
      在这里插入图片描述

      每一部分范围
      分钟0-59(从0开始,小时也是)
      小时0-23
      1-31
      1-12
      星期0-7,其中0和7都表示星期日

      PS:每一部分之间必须用空格隔开,不然会有语法错误,设置时间的格式与后面的命令也要用空格隔开

    • 时间格式中的各个字符解释

      字符解释例子例子解释
      *通配符,表示任意时间1 4 * * *每月每日的4时01分执行一次
      */数字n表示每隔多久执行一次,数字n就是间隔时间,如果n=1,则相当于一个**/2 * * * *每月每日每个小时内每2分钟执行一次
      ,表示不连续的执行时间12 5 3,5,10 * *每月的3号、5号和10号这三天的5时12分执行一次
      -表示连续的执行时间范围12 5 3-10 * *每月的3号至10号的5时12分执行一次
  • 拓展测试:每分钟将当前时间和日历追加到/home/tom/my-time.txt文件中,时间和日历是两个命令,可以将两个命令写到shell脚本中,设置定时任务时直接设置定时执行对应的shell脚本文件即可

    PS:这里涉及shell脚本的执行方式,参考博文:https://blog.csdn.net/timchen525/article/details/76407735https://blog.csdn.net/yanxilou/article/details/88948709

    ① 先在/home/tom目录下创建一个shell脚本,命名为my-shell.sh(后缀名是.sh) --> vim /home/tom/my-shell.sh,用vim编辑器打开脚本文件后,在文件内添加两条命令 --> date >> /home/tom/my-time.txtcal >> /home/tom/my-time.txt
    在这里插入图片描述

    ② 然后查看my-shell.sh脚本文件的权限,如果对于所有者(tom)无执行权限x就给他添加上 --> chmod u+x /home/tom/my-time.txt
    在这里插入图片描述

    ③ 在crontab文件中添加定时任务,直接执行shell文件即可 --> */1 * * * * /home/tom/my-shell.sh
    在这里插入图片描述

    ④ 过一段时间后,打印/home/tom/my-time.txt文件查看 --> cat /home/tom/my-time.txt
    在这里插入图片描述

2 at定时任务

2.1 基本介绍

  • at命令:at命令是一次性定时计划任务,at命令的守护进程atd会以后台模式检查任务队列(作业队列)来执行对应的任务

  • 定时执行任务:默认情况下,守护进程atd每隔60秒回检查一次任务队列(作业队列),队列中有作业时,atd会再检查作业的运行时间,如果当前时间与该作业的运行时间一致,则执行该作业

  • 一次性定时执行:已被执行的作业会被移出作业队列,以后不会再执行该作业,因此at命令设置的是一次性定时任务

    PS:crontab指令设置的是周期性定时任务

  • 注意事项

    • 使用at命令时,一定要保证atd守护进程的开启,检查atd进程是否开启的指令 --> ps -ef | grep atd
    • 与crontab指令一样,at指令可以执行简单的命令,也可以执行shell脚本文件

2.2 at指令

  • 基本语法:at [选项] [时间]

  • 设置at定时任务过程:先使用at指令进入任务编辑/设置状态,然后输入具体要定时执行的命令或程序/shell脚本,最后输入两次ctrl+D完成定时任务设置

  • 其他常用命令

    • atq查看当前所有at定时任务
    • atrm 任务编号(作业号):从任务队列中移除对应的任务
  • at指令的选项

    选项解释
    -m当指定的定时任务执行完成后,给用户发送邮件,即使没有标准输出
    -I查看当前所有at定时任务,atq命令的别名
    -d从任务队列中移除定时任务,atrm命令的别名
    -v显示定时任务被执行的时间
    -c打印定时任务的内容到标准输出
    -V查看版本信息,注意这里是大写的V
    -q <队列>使用执行的作业队列
    -f <文件>从指定文件读入任务而不是从标准输入读取
    -t <时间参数>以时间参数的形式提交要执行的任务

    ❓标准输入输出

    • 标准输入:从键盘获得输入,文件描述符为0
    • 标砖输出:输出/打印到控制台,文件描述符为1
  • at指令的时间格式

    时间格式解释举例
    hh:mm当天的某时某分06:00
    midnight或noon或teatime直接使用时间单词的模糊表示——
    [指定时间]pm使用12小时计时制表示5pm(下午5点,即17点)
    [指定时间] [月 日]或[日/月/年]或[日.月.年]或[年-月-日]等在时间后添加具体的日期,注意:日期一定要放在时间的后面04:00 2022-1-13
    [指定时间] + [表示时间的量词] [时间单位]使用相对计时法表示;如果[指定时间]为当前时间,则可以使用now代替当前时间;时间单位包括minutes、hours、days、months、years、weeks等now + 5 minutes(5分钟后)
    [指定时间] today或tomorrow使用时间单词表示今天明天,类似于指定一个具体日期04:00 tomorrow(明天4点)
  • 测试

    ① 明天17点将当前时间打印/输出到/home/tom/curr-date.log文件(如果不存在,会自动创建)中 --> at 5pm tomorrow + 回车 + date > /home/tom/curr-date.log + 两次ctrl+D
    在这里插入图片描述

    ② 2分钟后将日期打印到/home/tom/curr-date.log文件中 --> at now + 2 minutes + 回车 + cal > /home/tom/curr-date.log + 两次ctrl+D
    在这里插入图片描述

    ③ 查看当前所有at定时任务 --> atq
    在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值