任务调度crontab、at


任务调度分类:

任务调度:系统在某个时间执行特定命令或程序,周而复始地执行

1、系统工作:某些重要工作必须周而复始进行,如病毒扫描

2、个别用户的工作:我们希望执行的某些程序,比如对mysql数据库备份

crontab 任务调度

crontab [选项]

crontab -e		edit,编辑定时任务
crontab -l		list,查询定时任务
crontab -r		remove,删除所有定时任务

调用实例

执行

crontab -e

写入

*/1* * * * ls /root >> /home/handsome/boy.txt

退出后,自动开始执行。

参数说明

注:这里的“*”并不是“隔几分钟”,而是“第几分钟”

特殊符号

符号案例

注意:一般定义了几号就不要再定义周几,两者重复。


例:每隔一分钟向time.txt文件写入当前日期和日历

手动执行脚本

0、创建两个文件

touch /home/handsome/time.txt
touch /home/handsome/jiaoben.txt

1、在脚本中写入

cal >> time.txt
date >> time.txt

2、给脚本以执行权限

chmod u+x jiaoben.txt

3、手动执行脚本

./jiaoben.txt	

4、查看是否成功

cat /home/handsome/jiaoben.txt

自动执行脚本

0、创建两个文件

touch /home/handsome/time.txt
touch /home/handsome/jiaoben.txt

1、在脚本中写入

cal >> time.txt
date >> time.txt

2、给脚本以执行权限

chmod u+x jiaoben.txt

3、进入任务调度编辑器

crontab -e

4、编辑内容

*/1 * * * * /home/handsome/jiaoben.txt

5、查看是否成功

cat /home/handsome/jiaoben.txt

at 定时任务

一次性的定时任务。

原理:

at的守护进程atd会以后台模式运行,每次检查作业队列再运行。

默认情况下,守护线程atd每隔60s检查一次。有作业时会检查作业运行时间,当匹配就运行。

前提

一定要保证atd进程的启动

查看目前进程atd是否启动

ps -ef | grep atd
at [选项] [时间]

Ctrl + D 两次,来结束at命令的输入

时间的指定

1、接收当天的hh:mm的事件指定。

若事件已经过去就放在第二天执行。

例: 04:00

2、使用模糊的时间单词

midnight、noon、teatime(下午四点)

3、采用十二小时制,带上AM PM

4、指定执行的具体时间及日期

三种格式: 		

month day
mm/dd/yy	月日年
dd.mm.yy 	日月年		

例如 04:00 2021-03-1	//指定的日期必须跟在指定固定时间后面

5、相对计时法 now +count time-units

time-units是时间单位,可以用:分钟、小时、天、星期 count:时间数量,几分钟、几天

例:now + 5minutes

6、直接今天、明天:today tomorrow

操作实例

1、输入at

at now + 2minutes 再回车

ls /home 再Ctrl+D两次

2、atq 查看已有的队列

atq

3、atrm 删除

atrm n	//n为该工作的队列号