- 一、crond任务调度
- 1、概述
- 2、基本语法
- 3、快速入门
- 4、案例
- 5、crond相关指令
- 二、at定时任务
- 1、基本介绍
- 2、at命令格式
- 3、应用案例
- 任务调度:指的是系统在某个时间执行的特定的命令或程序
- 任务调度分类:
系统工作 - 有些重要的工作必须周而复始的执行,如病毒扫描等
个别用户工作 - 个别用户可能希望执行某些程序,比如对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命令
参数细节-五个占位符的说明:
| 项目 | 含义 | 范围 |
|---|---|---|
| 第1个* | 一小时当中的第几分钟 | 0-59 |
| 第2个* | 一天当中的第几小时 | 0-23 |
| 第3个* | 一个月当中的第几天 | 1-31 |
| 第4个* | 一年当中的第几月 | 1-12 |
| 第5个* | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号的说明:
| 特殊符号 | 含义 |
|---|---|
| * | 代表任何时间。比如第一个*代表一小时内的每分钟都执行一次的意思 |
| , | 代表不连续时间,比如"0 8,12,16 * * *",代表在每天的8点0分,12点0分,16点0分都执行一次命令 |
| - | 代表连续的时间范围,比如"0 5 * * 1-6",代表在周一到周六的凌晨5点0分执行命令 |
| */n | 代表每隔多久执行一次,比如"*/10 * * * *",代表每隔十分钟执行一遍命令 |
① 每隔一分钟,将当前的日期信息,追加到/tmp/mydate文件中
- crontab -e 在文件中输入:*/1 * * * * date >> /tmp/mydate
② 每隔一分钟,将当前时间和日历追加到/home/mycal文件中
- vim /home/my.sh 在文件中写入内容:
date >> /home/mycal
cal >> /home/mycal - 给my.sh增加权限:chmod u+x my.sh
- crontab -e 在文件中输入:*/1 * * * * /home/my.sh
③ 每天凌晨2:00将mysql数据库testdb,备份到文件中
指令为:mysqldump -u root -p密码 数据库 > /home/db.bak
- crontab -e
- 0 2 * * * mysqldump -u root -proot testdb > /home/db.bak
- crontab -r:终止任务调度
- crontab -l:列出当前有哪些任务调度
- service crond restart:重启任务调度
- at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
- 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
- at命令时一次性定时计划任务,执行完一个任务后不再执行此任务啦
- 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看.
ps -ef:查看当前正在运行的进程
ps -ef | grep atd:查看当前正在运行的atd进程
at [选项] [时间]
Ctrl + D,结束at命令的输入
at命令选项:
- -m:当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
- -I:atq的别名
- -d:atrm的别名
- -v:显示任务将被执行的时间
- -c:打印任务的内容到标准输出
- -V:显示版本信息
- -q <队列>:使用指定的队列
- -f <文件>:从指定文件读入任务而不是从标准输入读入
- -t <时间参数>:以时间参数的形式提交要运行的任务
at指定时间的方法:
- 接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行
- 使用midnight(深夜)、noon(中午)、teatime(饮茶时间,一般式下午4点)等比较模糊的词语来指定时间
- 使用12小时计时制,即在时间后面加上AM或PM,来说明式上午还是下午
- 指定命令执行的具体日期,指定格式为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、tommorrow来指定完成命令的时间
① 2天后的下午5点执行/bin/ls /home
② atq命令查看系统中没有执行的工作任务
③ 明天17点,输出时间到指定文件夹内,比如 /root/date100.log
④ 2分钟后,输出时间到指定文件内,比如/root/date200.log
⑤ 删除已经设置的任务,atrm 编号
输入两次Ctrl+D,结束at任务的输入



