Fork me on GitHub

Linux学习笔记9

定时任务调度

crond任务调度

1.概述

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

 

2.基本语法 : crontab [选项]

3.常用选项

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

 

4.快速入门

设置任务调度文件:/etc/crontab
设置个人任务调度:执行crontab -e文件
接着输入任务到调度文件 如:*/1****ls -l /etc/ > /tmp/to.txt

 

5.参数细节说明

  • ① 5个占位符说明
    • 项目 含义 范围
      • 第一个"*" 一小时当中的第几分钟 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分钟就执行一遍命令

 

6.应用实例

  • 案例1:每隔一分钟,就将当前的日期信息,追加到/tmp/mydate文件中
  • 指令: */1 * * * * date >> /tmp/mydate

 

  • 案例2:每隔一分钟,将当前日期和日历都追加到/home/mycal文件中
  • 指令:
    • (1).vim /home/my.sh 写入内容 date >> /home/mycalcal >> /home/mycal
    • (2).给my.sh增加执行权限, `chmod u+x /home/my.sh
    • (3). crontab -e 增加 */1* * * * /home/my.sh

 

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

 

  • 7.crond相关指令
  • crontab -r 功能:终止任务调度
  • crontab -l 功能:列出当前有哪些任务调度
  • service crond restart [重启任务调度]

 

at定时任务

1.基本介绍

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

 

2.at命令模式

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

 

3.at命令选项

  • -m 含义:当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
  • -I 含义:atq的别名
  • -d 含义:atrm的别名
  • -v 含义:显示任务将被执行的时间
  • -c 含义:打印任务的内容到标准输出
  • -V 含义:显示版本信息
  • -q<队列> 含义:使用指定的队列
  • -f<文件> 含义:从指定文件读入任务而不是从标准输入读入
  • -t<时间参数> 含义:以时间参数的形式提交要运行的任务
  • *at时间定义
  • at指定时间的方法:
    • 1.接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。比如:4:00
    • 2.使用midnight深夜,noon中午,teatime饮茶时间等比较模糊的词语来指定时间。
    • 3.采用12小时计时制,即在时间后面加上AM上午或PM下午来说明是上午还是下午。例如:12pm
    • 4.指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月 日 年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。如:04:00 2021-03-01
    • 5.使用相对计时法。指定格式为:now + count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。例如:now + 5 minutes
    • 6.直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

 

4.应用实例:

  • 案例1:2天后的下午5点执行/bin/ls/home
    • 指令:
      • at 5pm + 2days
    • at> /bin/ls/home

 

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

 

  • 案例4:2分钟后,输出时间到指定文件内 比如/root/date200.log
    • 指令:
      • at now + 2 minutes
      • at> date > /root/date200.log

 

  • 案例5:删除已经设置的任务, atrm 编号
    • 例如 atrm 1
    • 注意要输入 两次Ctrl + D 才能结束at命令的输入
posted @ 2021-05-17 09:05  Hui_Li  阅读(71)  评论(0编辑  收藏  举报