定时任务调度
任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类
- 系统工作:有些重要的工作必须周而复始的执行
- 个别用户工作:个别用户可能希望执行某些程序
crontab 进行任务的设置
基本语法
crontab [选项]
常用选项
-e
:编辑 crontab
定时任务
-l
:查询crontab
任务
-r
:删除当前用户所有的crontab
任务
快速入门
设置任务调度文件:/etc/crontab
设置个人任务调度:crontab -e
接着输入任务到调度文件
*/1**** ls -l /etc/ > /tmp/to.txt
每小时的每分钟执行ls -l /etc/ > /tmp/to.txt
命令
细节说明
-
5个点位符的说明
- 第一个 "*":一小时当中的第几分钟 【0-59】
- 第二个 "*":一天当中的第几小时 【0-23】
- 第三个 "*":一个月当中的第几天 【1-31】
- 第四个 "*":一年当中的第几月 【1-12】
- 第五个 "*":一周当中的周几 【0-7】( 0 和 7 都代表周日)
-
特殊符号说明
-
*
:表示任何时间。如第一个"*",就代表一小时中每分钟都执行一次 -
,
:表示不连续的时间。如“ 0 8,12 * * * ”,就代表每天的8点0分,12点0分执行一次 -
-
:表示连续的时间范围。如“ 0 5 * * 1-6 ”,代表周一到周六凌晨5点0分执行 -
*/n
:表示每隔多久执行一次。比如“ */1 * * * * ”,代表每隔1分钟执行一次
-
crond 相关指令
终止任务调度
crontab -r
列出当前有那些任务调度
crontab -l
重启任务调度
service crond restart
at 定时任务
基本介绍
-
at
命令是一次性定时计划任务,at
的守护进程atd
会以后台模式运行,检查作业队列来运行 - 默认情况下,
atd
守护进程每 60 秒检查作业队列,有作业时,会检查作业运行时间,如时间与当前时间匹配,则运行此作业 -
at
命令是一次性定时计划任务,执行完一个任务后不再执行此任务 - 在使用
at
命令时,一定要保证atd
进程的启动 可以使用相关指令来查看:ps -ef | grep atd
基本语法
at [选项] [时间]
Ctrl + D 结束at
命令的输入,两次
常用选项
-m
:当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-I
:atd
的别名
-d
:atrm
的别名
-v
:显示任务将被执行的时间
-c
:打印任务的内容到标准输出
-V
:显示版本信息
-q<队列>
:使用指定的队列
-f<文件>
:从指定文件读入任务而不是从标准输入读入
-t<时间参数>
:以时间参数的形式提交要运行的任务
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天后的下等5点执行 /bin/ls/home
$ at 5pm + 2 days
at> /bin/ls/home