1. 任务调度原理

  • 任务调度:是指系统在某个时间执行的特定的命令或程序。
  • 任务调度分类.
    • 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
    • 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份

crond任务调度:crontab进行定时任务调度
Snipaste_2022-02-22_20-11-39.png

  • 使用方法:crontab [选项]

    • crontab [选项]
    • -e:编辑crontab定时任务
    • -i:查询crontab任务
    • -r:删除当前用户所有的crontab任务
    • -l:列出当前有哪些任务调度
    • service crond restart:重启任务调度

    • 当保存退出后就生效了

  • 快速入门

    • 设置任务调度文件:/etc/crontab
    • 设置个人任务调度。执行crontab -e命令
    • 接着输入任务到调度文件

      1. */1 * * * * ls -l /etc/ > /tmp/to.txt
      2. 意思说每个小时的每分钟执行ls -l /etc/ > /tmp/to.txt 命令
    • 参数细节说明(注意星号之间要有间隔) | 项目 | 含义 | 范围 | | —- | —- | —- | | 第一个“” | 一小时当中的第几分钟 | 0-59 | | 第二个“” | 一天当中的第几小时 | 0-23 | | 第三个“” | 一个月当中的第几天 | 1-31 | | 第四个“” | 一年当中的第几月 | 1-12 | | 第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |

    • 特殊符号说明

      • \*:代表任何时间。比如第一个*就代表一小时中每分钟都执行一次的意思。
      • ,:代表不连续的时间。比如“0 8,12,16 * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令。
      • -:代表连续的时间范围。比如“0 5 1-6命令”,代表在周一到周六的凌晨5点0分执行命令。
      • /n:代表每隔多久执行一次。比如“/10 * 命令”,代表每隔10分钟就执行一遍命令。
  • 特定时间执行任务案例

image.png

  1. 应用实列:
  2. 案例1:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate文件中
  3. crontab -e
  4. */1 * * * * data >> /tmp/mydata
  5. 案例2:每隔2分钟,将当前日期和日历都追加到/home/mycal文件中
  6. 第一步 编辑一个脚本文件
  7. vim /home/my.sh
  8. date >> /home/mycal
  9. cal >> /home/mycal
  10. 第二步:
  11. crontab -e
  12. */1 * * * * /home/my.sh
  13. 案列3:每天凌晨200mysql数据库testdb,备份到文件中,提示:指令为mysqldump -u root -p密码 数据库 >> /home/bd.bak
  14. 第一步:crontab -e
  15. 第二步:0 2 * * * mysqldump -u root -proot testdb > /home/db.bak

8.2 at定时任务

  • 基本介绍

    • at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
    • 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
    • at命令是一次性定时任务计划,执行完一个任务后不再执行此任务了
    • 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看
      • 查看指令是ps -ef | grep atd
        1. [root@Tyc home]# ps -ef | grep atd
        2. root 1089 1 0 Feb21 ? 00:00:00 /usr/sbin/atd -f
  • at命令格式

    1. at [选项] [时间]
    2. ctrl + D 结束at命令输入(两次)

    image.png

  • at命令选项

Snipaste_2022-02-22_21-30-50.png

  • at时间定义的方法

Snipaste_2022-02-22_21-32-25.png

  • 相关方法
    • atq命令,来查看系统中没有执行的工作任务
    • atrm 编号 删除已经设置的任务
  • 案列
    • 2天后的下午5点执行/bin/ls /home

image.png

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

image.png