定时任务调度
crontab任务调度
概述
-
任务调度:是指系统在某个时间执行的特定的命令或程序
-
任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
-
个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份
基本语法
crontab [选项]
# 常用选项
-e:编辑crontab定时任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
快速入门
-
设置任务调度文件:
/etc/crontab
-
设置个人任务电度。执行
crontab -e
命令。 -
接着输入任务到调度文件
如:*/1 * * * * * ls -l /etc/ > /tmp/to.txt
命令,意思是说每小时的每分钟执行ls -l /etc/ > /tmp/to.txt
命令。
参数细节说明:
具体参照cron表达式说明
crond相关指令
crontab -r:终止任务调度
crontab -l:列出当前有哪些任务调度
service crond restart [重启任务调度]
at定时任务
基本介绍
-
at命令是一次性定时任务,at的守护线程atd会以后台模式运行,检查作业队列来运行
-
默认情况下,atd守护线程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
-
at命令是一次性定时计划任务,执行完一个任务后不在执行此任务了
-
在使用at命令时,一定要保证atd进程的启动,可以使用相关指令进行查看
at命令格式
at [选项] [时间]
Ctrl+D 结束at命令的输入
# 查看atd进程相关命令
ps -ef | grep atd
at命令选项
选项 | 含义 |
---|---|
-m | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 |
-i | atq的别名 |
-d | atrm的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标椎输出 |
-V | 显示版本信息 |
-q<队列> | 使用指定的任务队列 |
-f<队列> | 从指定文件读入任务而不是从标椎输入读入 |
-t<时间参数> | 以时间参数的形式提交要运行的任务 |
at定时任务实例
2天后的下午5点执行 /bin/ls/home
;
at 5pm + 2 days
at> /bin/ls /home<EOT>
atp命令来查看系统中没有执行的工作任务
atq
明天17点钟,输出时间到指定文件内,如/root/date100.log
at 5pm tomorrow
at> date > /root/date100.log<EOT>
2分钟后,输出时间到指定文件内,比如/root/date200.log
at now + 2 minutes
at> date > /root/date200.log<EOT>
删除已经设置的任务,atrm编号
at now + 2 minutes
at> /root/my.sh
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(明天)来指定完成命令的时间