• Linux实操篇-定时任务调度



    1 crond 任务调度

    ==> 视频链接

    • crontab 进行 定时任务的设置

    1.1 概述

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

    • 任务调度分类:

      ① 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等
      ② 个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份

    • 示意图:

    在这里插入图片描述

    1.2 基本语法

    • crontab[选项]

    1.3 常用选项

    • -e 编辑 crontab 定时任务
    • -l 查询 crontab 任务
    • -r 删除当前用户所有的 crontab 任务

    1.4 快速入门

    • 设置任务调度文件:/etc/crontab

    • 设置个人任务调度,执行 crontab -e 命令

    • 接着输入任务到调度文件

      如:*/1 * * * * ls -l /etc/ > /temp/to.txt

      意思是:每小时的每分钟执行 ls -l /etc/ > /temp/to.txt 命令

    • 参数细节说明,五个占位符的说明

    在这里插入图片描述

    • 特殊符号的说明

    在这里插入图片描述

    • 特殊时间执行案例

    在这里插入图片描述

    1.5 应用实例

    1. 每隔1分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
    */1 * * * * >> /tmp/mydate
    
    • 1
    1. 每隔1分钟,将当前日期和日历都追加到 /home/mycal 文件中
    步骤:
    (1) vim /home/my.sh  写入内容: date >> /home/mycal 和 cal >> /home/mycal
    (2) 给 my.sh 增加执行权限 chmod u+x /home/my.sh
    (3) crontab -e 增加 */1 * * * * /home/my.sh
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    1. 每天凌晨 2:00 将 mysql数据库 testdb,备份到文件中
      提示:指令为 mysqldump -u root -p密码 数据库 > /home/db.bak
    步骤
    (1) crontab -e
    (2) 0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
    
    • 1
    • 2
    • 3

    1.6 crond 相关指令

    • conrtab -r :终止任务调度
    • crontab -l :列出当前有那些任务调度
    • service crond restart :重启任务调度

    在这里插入图片描述

    2 at 定时任务

    2.1 基本介绍

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

    在这里插入图片描述

    1. 示意图

    在这里插入图片描述

    2.2 at 命令格式

    • at [选项] [时间]
    • Ctrl + D 结束 at 命令的输入,输入两次

    2.3 at 命令选项

    在这里插入图片描述

    2.4 at 时间定义

    at 时间定义的方法:

    1. 接受在当天的 hh:mm (小时:分钟) 式的时间指定。假如该时间已过去,那么就放在第二天执行,例如:05:00

    2. 使用 midnight (深夜) ,noon (中午) ,teatime (饮茶时间,一般是下午 4 点) 等比较模糊的词语来指定时间

    3. 采用 12 小时计时制,即在时间后面加上 AM (上午) 或 PM (下午) 来说明是上午还是下午

    4. 指定命令执行的具体日期,指定格式为:month day (月 日) 或 mm/dd/yy (月/日/年) 或 dd.mm.yy (日.月.年) ,指定的日期必须跟在指定时间的后面。例如:05:00 2022-08-30

    5. 使用相对计时法,指定格式为:now + count time-units

      • now 就是当前时间
      • time-units 是时间单位,这里能够使用的有:
        • minutes (分钟)
        • hours (小时)
        • days (天)
        • weeks (星期)
      • count 是时间的数量,几天,几小时
      • 例如:now + 5 minutes
    6. 直接使用 today (今天) ,tomorrow (明天) ,来指定完成命令的时间

    2.5 应用实例

    • 案例1:2 天后的下午 5 点执行 /bin/ls /home

    在这里插入图片描述

    • 案例2:atq 命令来查看系统中有没有执行的工作任务
    • 案例3:明天 17 点钟,输出时间到指定文件内,比如:/root/date100.log

    在这里插入图片描述

    • 案例4:2 分钟后,输出时间到指定文件内,比如:/root/date200.log

    在这里插入图片描述

    • 案例5:删除已经设置的任务,atrm 编号
    atrm 4 #表示将job队列中 编号为4的 job 删除
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    kubernetes资源监控
    企业应用集成
    ReaLTaiizor开源.NET winform控件库学习使用
    华为机试 - 高矮个子排队
    AI新工具(20240223) Stable Video - 图生视频和文生视频;background erase -移除照片背景等
    RabbitMQ高级知识点
    动态开点线段树(C++实现)
    二分查找:74搜索二维矩阵
    C++ - 智能指针 - auto_ptr - unique_ptr - std::shared_ptr - weak_ptr
    Python 人工智能编程指南:基础、库和工具大全解析
  • 原文地址:https://blog.csdn.net/weixin_60766221/article/details/125880781