Linux定时任务调度
定时任务调度:指每隔指定的时间,执行特定的命令或程序(脚本)
任务调度命令:
crontab
-e 编辑定时任务
-l 查询定时任务
-r 删除定时任务
例.创建一个定时任务,将etc目录下面的文件列表查询出来,追加到/tmp/etc.txt文件中,并每分钟执行1次。
*/1 * * * * ls -l /etc/ > /tmp/etc.txt
占位符含义
第一个 “*” 一个小时当中的第几分钟 0-59
第二个 “*” 一天当中的第几个小时 0-23
第三个 “*” 一个月当中的第几天 1-31
第四个 “*” 一年当中的第几个月 1-12
第五个 “*” 一周当中的星期几 0-7(0和7都代表星期日)
特殊符号
* 代表任何时间,比如第一个“*”就代表1小时中每分钟都执行1次的意思。
, 代表不连续的时间,比如“0 8,12,16 * * *”就代表1天中的8点过0分,12点过0分,16点过0分都会执行1次。
- 代表连续的世间范围,比如“0 5 * * 1-6”就代表星期1到星期6的凌晨5点过0分都会执行。
*/n 代表每隔多久执行1次。比如“*/10 * * * *” 就代表每隔10分钟就执行1次命令。
注:service crond restart [重启任务调度]
at
机制介绍:
1. at命令是一次性定时执行任务计划,at的守护线程atd以后台的模式运行,检查作业队列来运行。
2. 默认情况下,atd守护线程每60秒检查作业队列,有作业时会检查作业运行时间,如果时间与当前
时间匹配,则运行此作业。
3. at命令是一次性定制的计划任务,执行完一个任务后就不再执行此任务了。
4. 在使用at命令的时候,一定要保证atd进程的启动,可以用相关指令来查看
ps -ef | grep atd
时间定义:
HH:MM
当天 HH:MM 执行,若当天时间已过,则在明天 HH:MM 执行
当天 4:00 (若超时则为明天 4:00): 4:00
英文粗略时间单次
midnight(午夜,00:00)、noon(中午,12:00)、teatime(下午茶时间,16:00) tomorrow(明天)
midnight、noon、teatime
英文月名 A 日期B [年份C]
C年A月B日执行
在 2018 年 1 月 15 日执行:January 15 2018
日期时间戳形式
绝对计时法 时间+日期
时间:HH:MM
日期:MMDDYY或MM/DD/YY或MM.DD.YY
在 2018 年 1 月 15 日执行:011518或01/15/18或01.15.18
now + 数量 单位
相对计时法
以 minutes、hours、days 或 weeks 为单位
5 天后的此时此刻执行:now + 5 days
参数
-m 当前任务执行后,向用户发送邮件
-l(=atq) 列出当前用户任务队列
-d(=atrm) 删除at任务
-v 显示任务将被执行时间
-c 输出任务内容
-V 显示版本信息
-f <文件> 从指定文件读入,而不是标准输入
-t <时间参数> 以时间参数的形式提交要运行的任务,时间参数MMDDhhmm(月日时分)
语法格式
at [选项] [时间]
at > 命令(输入两次 Ctrl + D)