任务调度:指系统在某个特定时间执行特定的命令或程序
crond任务调度会反复执行那个任务,at定时任务只执行一次。
一、crond任务调度
crontab命令:
1、基本语法:crontab 选项
2、常用选项:
-e:编辑crontab定时任务
-r:删除当前用户所有crontab任务
-l:查看所有crontab任务
3、编写任务的格式:* * * * * +执行的任务
5个占位符的含义:
项目 | 含义 | 范围 |
第一个* | 一个小时中的第几分钟 | 0~59 |
第二个* | 一天中的第几小时 | 0~23 |
第三个* | 一个月的第几天 | 1~31 |
第四个* | 一年中的第几月 | 1~12 |
第五个* | 一周中的星期几 | 0~7(0和7都表示周日) |
特殊符号含义:
特殊符号 | 含义 |
* | 表示任何时间,比如* 1 * * *表示每天1点的每一分钟都执行一次 |
, | 表示不连续的时间,比如0 8,12 * * *表示每天8点0分,12点0分都执行一次 |
- | 表示连续的时间范围,比如0 8 * * 1-5表示每周一到周五8点0分都执行一次 |
*/n(n是一个数字) | 表示每隔多久执行一次,比如*/5 * * * *表示每隔5分钟就执行一次 |
4、重启任务调度:service crond restart
二、at定时任务
at的守护进程atd会以后台模式执行,每隔60秒检查作业队列的运行,执行完任务后就不执行这个任务了。
1、ps -ef指令
ps -ef指令可以查看当前所有运行的程序,若要查看atd是否在运行,可以使用ps -ef | grep atd指令来实现。atq命令可以用来查看系统中没有执行的工作任务。
2、at指令
1、格式:at [选项] [时间]:在指定的时间执行指定的任务
2、Ctrl+D可以结束at指令的输入
3、常用选项:
- -m:当指定任务被执行后,将向用户发送邮件
- -I:atq的别名
- -d:adrm的别名
- -v:查看任务将被执行的时间
- -c:打印任务的内容到标准输出
- -V:显示版本信息
- -q+队列:使用指定的队列
- -f+文件:从指定文件读取任务而不是从标准输入读入
- -t+时间参数:以时间参数的形式提交要运行的任务
- at指定时间的方法:
- 小时:分钟形式的指定,如果该时间已过去则放在第二天执行
- 使用midnight,noon,teatime等比较模糊的词语来指定时间
- 使用12小时制,用am,pm来表示上下午,如8pm
- 指定具体日期,月 日或月 日 年或日 月 年,指定日期必须跟在指定时间后面
- 使用相对计时法,now+count time-units,time-units是时间单位,可以是minutes,hours,days,weeks。count是时间的数量,now是当前时间,也可以使用其它时间代替。
- 直接使用today,tomorrow来指定
3、atrm指令
atrm+任务编号可以删除已有的任务。