目录
任务定时调度定义:
在Linux系统中,后台会执行一个crond程序,这个程序可以通过设定时间来让系统定时调用某个命令、脚本。任务调度可以是系统中一些重要任务的调用,也可以是用户自己设定的一些定时任务的调用。
1、crontab:
这个指令用于设定定时任务。它的基本语法是:
crontab [选项]
常用选项有:
-r:删除当前用户所有定时任务
-e:编辑增加用户的定时任务
-l:查询定时任务
在设定定时任务的时间时,我们通过设定这五个星:* * * * *
- 第一个星表示:一个小时里面的哪一分钟(0~59)
- 第二个星表示:一天中哪一个小时(0~23)
- 第三个星表示;一个月中哪一天(1~31)
- 第四个星表示:一年中第哪个月(1~12)
- 第五个星表示:一周中星期几(0(7)~6)
不需要修改的地方保留星号,修改的方式有以下几种:
* -- 这个默认符号表示当前的每个单位时间都执行,例如第五个位是星就表示一周内每天都执行一次、第二个位是星表示一天内每个小时都执行一遍。
x-y -- 这个符号表示从x-y的时间内连续执行。例如 * 23 * 2-8 * 表示一年中第2个月到第8个月每个月的23时都执行一遍。
x , y.. -- 这个符号表示在x,y...的间断时间内执行一遍。例如 * 8, 11 , 15 * * * 表示一天中8点、11点、15点执行一遍。
*\x -- 这个符号表示每个x单位时间就会执行一遍任务。例如 * * * *\5 *表示每隔5个月执行一遍
2、ps -ef:
这个指令是用于查看当前正在运行的所有进程,它的用法就是直接输入命令:
ps -ef
即可。要是我们想要查看某一个特定的进程,我们可以利用管道加grep指令。例如查看atd进程:
ps -ef | grep atd
3、at:
相对于crontab指令的反复调度,我们还需一种调用只执行一次的方式。所以我们引入了at指令。at指令有一个相对应的atd后台程序。这个程序的存在可以理解为就是对我们设置的任务(作业)的管理程序。它每60s就会对作业进行一次扫描,查看哪些作业需要执行,如果有作业执行了就会被移出去,然后反复扫描。这里要想配置定时任务,需要我们确保atd程序已经开启,所有我们一般先查看有无开启atd程序再去设置命令。
at [选项] [时间]
上面是at指令的形式,我们再来看看时间配置:
时间配置有很多种方法,这里我列举两个:
1、直接年月日时间:这里日期要跟着时间后面,如21:16 15/6/2022、21:16 25-6-2022
2、叠加:now + 5 minutes、now + 10 hours、now + 20 weeks
当我们输入完指令后,输入Ctrl+D两次表示退出,再输入atq即可查看当前作业。
删除作业则需要操作atrm+编号。