前提:
1.时间的准确性;
2.支持任务调度的应用程序;
atd:在未来某个时间点执行一次计划任务;
crond:在未��某个时间点周期性的执行已设定计划任务;
注意:在计划任务中所有执行的操作命令的输出结果,这类结果均以邮件的方式发送至指定用户的邮箱中;
本地的电子邮件服务:
SMTP:简单邮件传输协议,TCP/25;
mail [-s SUBJECT] USERNAME[@DOMAINNAME]
/var/spool/mail目录中为每个系统用户都安放了邮箱;
atd任务调度进程,能够识别和完成有at命令及batch命令定制的计划任务;
at命令:
at [option] timespec
timespec:
1.HH:MM [YYYY-mm-dd]
2.noon, midnight, teatime
3.tomorrow
4.now+#UNIT
UNIT:minutes, hours, days, or weeks
at定义的计划任务都在某个特定的任务队列之中;默认at只启用了一个任务队列,用字母"a"来标识;队列名称通常使用单个字母;
at命令的常用用法:
at [-q QUEUE_NAME] time:定义计划任务;在输入任务之后,Ctrl+d提交;
atq或at -l
查看所有的任务队列中的尚未执行的计划任务列表;
atrm JOB_ID或at -d JOB_ID
撤销任务队列中尚未执行的指定任务标识符的计划任务;
at -f /PATH/TO/SOME_FILE time
at -c JOB_ID:查看指定的计划任务的具体内容;
batch命令:
与at命令功能类似,都是一次性的定义计划任务;
区别是,batch命令定义计划任务时,无需指定执行时间,而是由系统自动选择较空闲时间完成此任务;
crond任务调度进程:能够识别和周期性的执行crontab命令定制的计划任务;
需要cronie程序包提供;通常在CentOS系统中会被默认安装;
crontab定义的计划任务分为两类:
系统任务:
全局性任务;通常使用/etc/crontab文件中定义;
/etc/crontab文件的通用格式:
* * * * * user-name command to be executed
分钟 小时 天 月 星期
注意:
* * * * *:定义周期性执行计划任务的具体时间;
user-name:运行后面命令的用户账户;
command to be executed:此次计划任务的执行主体;为了保证任务能够正确执行,命令建议使用绝对路径;
用户任务:
个体性任务;通常会存放在/var/spool/crom/下与用户名对应的文件中;
此类文件的格式:
* * * * * command to be executed
分钟 小时 天 月 星期
时间表示法:
1.某个特定时间:给定的时间点的有效取值范围内的所有有效值;
0 3 4 9 5
2.通配符时间:"*",表示"每..."的意思;
3.离散的时间点:
0 8,20 * * 1,2,4,5
4.连续的时间段:
0-10 8-12 * * *
5.步进时间:
*/3 * * * *
*/9 * * * *:无法真正实现每9分钟执行一次;因此默认情况下,步进长度应该是能够被60整除的数字;
注意:最小的时间单位是分钟,如果计划使用不足一分钟的若干秒为执行周期,则必须借助于其他的机制,如:编写shell脚本;
用户周期性任务的定制:
crontab命令:
crontab - maintains crontab files for individual users