前言——定时任务分为两种:1.到某个时间段重复执行2.到某个时间点只执行一次就抛弃任务
一、cron任务调度
系统工作,有些重要的工作必须周而复始的执行,如病毒扫描,数据库备份。
基本语法:
#添加/删除/查看任务
crontab [选项]
#重启任务调度
service crond restart
选项表如下:
参数 | 说明 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
举例说明使用:
要求每隔一分钟就把当前时间追加到/luzelong/date.log
输入crontab -e
进行任务编写,敲下回车就会进入下面的编辑面板。
通过crontab -l
查询任务列表,发现任务已经在任务列表
经过一分钟,就会在/luzelong的目录下,创造出下面的文件(注意!/luzelong文件夹要有写的权限)
现在删除所有的任务:
说明一下:crontab -e 第一段的表达式
例子:
经典案例:每天凌晨2点将mysql数据库 lzl ,备份到文件中
crontab -e
0 2 * * * mysqldump -u root -proot lzl > /home/db.bak
二、at定时任务
at命令是一次性定时任务,at的守护进程会在后台模式运行,检查作业队列来运行。
#检查atd是否在运行
ps -ef | grep atd
#at任务的发布
at 【选项】 【时间】
#结束at命令的输入,输入两次!!!!!
ctrl + D
选项查询表:
at 指定时间的方法:
- 接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
- 使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午 4 点)等比较模糊的词语来指定时间。
- 采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。 例如:12pm
- 指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指 定的>日期必须跟在指定时间的后面。 例如:04:00 2021-03-1
- 使用相对计时法。指定格式为:now + count time-units ,now 就是当前时间,time-units 是时间单位,这里能够是 minutes (分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,几天,几小时。 例如:now + 5 minutes
- 直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间。
案例:明天下午2点执行 /bin/ls /luzelong
删除任务:
atrm 编号
执行下面的命令,发现刚刚发布的任务已经删除了