一、crontab概述
- 任务调度指的是系统定时的调用命令或程序。
crontab 选项
:进行定时任务的设置 [ 例:crontab -e
:编辑“crontab"定时任务] {使用该指令之后,会打开一个任务调度文件,我们需要在调度文件中填写相关指令}- crontab选项说明:
(1)、-e
:编辑”crontab“定时任务
(2)、-l
:查询正在执行的”crontab“任务
(3)、-r
:删除当前用户的所有”crontab"任务 */1 * * * * ls -l /etc/ > /tmp/test.txt
:调度文件内容示例 [ 该指令表示:每分钟执行一次ls -l /etc/ > /tmp/test.txt
] {关于ls -l /etc/ > /tmp/test.txt
:是将“etc”显示的内容重定向到“test.txt"中}- 时间参数详细说明:
(1)、第一个”*“
:表示按分钟定时(范围:0-59)
(2)、第二个”*“
:表示按小时定时(范围:0-23)
(3)、第三个”*“
:表示按天来定时(范围:1-31)
(4)、第四个”*“
:表示按月来定时(范围:1-12)
(5)、第五个”*“
:表示按周来定时(范围:0-7)
(6)、,
:表示不连续的时间 [ 例:0 8,12,16 * * *
:表示在8点整、12点整、16点整都执行一次定时任务] {由于第一个位置的’ * ‘表示分钟,所以是0分,而第二个位置的’ * '表示小时,所以是8点、12点、16点。值得注意的是逗号后面不需要空格}
(7)、-
:表示连续的时间范围 [ 例:0 12 * * 1-6
:表示周1到周6的12点整执行一次定时任务 ] {参照第(6)条相信大家已经可以理解这条时间描述了}
(8)、*/n
:表示间隔多久时间执行一次 [ 例:*/10 * * * *
:表示每十分钟执行一次定时任务 ] {有同学问要是我想每隔8天执行一次怎么写?* * */8 * *
就是这样啦} - 如果你想更好的理解时间表示,可以看看下面的示例:
(1)、45 22 * * *
:在22:45执行定时任务
(2)、0 17 * * 1
:在每周1的17:00执行定时任务
(3)、0 5 1,15 * *
:在每月1号和15号的5:00执行定时任务
(4)、40 4 * * 1-5
:在每周1到周5的4:40执行定时任务
(5)、*/10 4 * * *
:每天4:00开始每隔10分钟执行定时任务
(6)、0 0 1,15 * 1
:每周1和每月1号和每月15号的0:00执行定时任务
二、at 一次性定时任务
- at是一次性定时任务,只执行一次后续不再执行
- 在使用at命令的时候,要保证atd进程是启动的。使用:
ps -ef | grep atd
指令可查看atd进程是否运行 - atd原理:每60秒检查一次作业队列,有作业时检查其运行时间,如果时间于当前时间匹配则允许作业
at 选项 时间
:定时执行任务 [ 例:at -m
]- at选项介绍:
(1)、-m
:当指定的任务完成后,将发送邮件给用户
(2)、-I
:atq别名
(3)、-d
:atrm的别名
(4)、-v
:显示任务将被执行的时间
(5)、-c
:打印任务的内容到标准输出
(6)、-V
:显示版本信息
(7)、-q<队列>
:使用指定的队列
(8)、-f<文件>
:从指定文件读入任务
(9)、-t<时间参数>
:以时间参数的形式提交要允许的任务 - at指定时间的方法:
(1)、hh::mm
:(小时:分钟) [ 如果时间过去,则会在第二天这个时间点执行 ]
(2)、可以使用midnight(深夜)
、noon(中午)
、teatime(饮茶时间)
这些比较模糊的词语指定时间
(3)、12pm || 3am
:12小时制指定“pm”和“am”表示下午和上午
(4)、04:00 2025.03.11
:表示“2025年3月11号早上4:00
(5)、now + 5 minutes
:表示五分钟后执行一次,担任单位也可以换成小时,天等。
(6)、直接使用today
、tomorrow
指定时间 - at使用示例:
(1)、at 5pm + 2 days
:2天后下午5点执行定时任务 [ 输入指令后回车,然后可以继续输入定时任务内容,ls /home
:2天后下午5点执行此指令] {我们要记得,当你输入完任务内容时需要按快捷键ctrl +d
来结束输入。}
(2)、at now + 2minutes
:两分钟后执行任务 atq
:查看系统的工作任务atrm 编号
:删除定时任务 [ 例:atrm 5
:删除编号为5的定时任务 ] {编号可以通过atq
查看}