概述
任务调度是让系统在规定的某个时间自动的执行特定的命令和程序。
主要使用的有crontab和at两个命令
crontab
用于周而复始的进行某项工作,比如系统的病毒查杀,数据的备份,
以及用户想要执行的程序或命令。
基本语法如下:
选项 | 解释 |
---|---|
-e | 编辑crontab定时任务 |
-f | 查询crontab定时任务 |
-r | 终止crontab定时任务 |
-l | 列出当前用户所有的crontab定时任务 |
service crond restart | 重启任务调度 |
参数细节说明:*****
项目 | 含义 | 范围 |
---|---|---|
第一个"*" | 一小时中的第几分钟 | 0-59 |
第二个"*" | 一天中的第几小时 | 0-23 |
第三个"*" | 一个月中的第几天 | 1-31 |
第四个"*" | 一年中的第几个月 | 1-12 |
第五个"*" | 一周中的星期几 | 0-7(0和7都代表周日) |
案例说明:
时间 | 含义 |
---|---|
" 00 12 ***" | 代表在12点00分执行命令 |
" 0 18 ** 5" | 每周5的18点0分执行命令 |
" 05 5,15** " | 每月5号和15号的凌晨5点0分执行命令 |
" * /10 9*** " | 每天的早晨9点,每隔10分钟执行一次命令 |
" 0 0 1,15 *1" | 每月1号和15号,每周1的0点0分都会执行命令 注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。 |
特殊符号的说明:
特殊符号 | 含义 |
---|---|
" * " | 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思 |
" ’ " | 代表不连续的时间。比如“06,12,18***命令”,就代表在每天的6点0分,12点0分,18点0分都执行一次命令 |
" - " | 代表连续的时间范围,比如“03 **1-6命令”,代表在周一到周六的凌晨3点0分执行命令 |
" /n " | 代表每隔多久执行一次,比如"* /1****"命令”,代表每隔1分钟就执行一遍命令 |
at
1.一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
2.默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间字当育时间匹配,则运行此作业。
3. at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
4.在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看
ps -ef | grep atd//可以检测atd是否在运行
命令格式:
at [选项] [时间]
Ctrl +D 结束at命令的输入
基本语法如下:
选项 | 解释 |
---|---|
-m | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 |
-I | atq的别名 |
-d | atrm的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q<队列> | 使用指定的队列 |
-f<文件> | 从指定文件读入任务而不是从标准输入读入 |
-t<时间参数> | 以时间参数的形式提交要运行的任务 |
at指定时间的方法:
1.接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如:04:00
2.使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
3.采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如:12pm
4.指定命令执行的具体日期,指定格式为month day(月日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-03-1
5.使用相对计时法。指定格式为:now+ count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes
(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。例如:now+5 minutes
6.直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
本文章是我经过B站韩顺平韩老师一周学会Linux课程学习后的总结。