### 在linux中,我们可以实现对于任务的未来调度,从而可以借助于linux实现半自动化运维操作方式,简而言之就是可以在未来的某个时间点,系统可以自动运行我们部署的任务
前提:
需要一个准确的时间
可以支持任务调度的应用程序
**注意**:
在计划任务中,所有执行的命令的输出结果,这类及结果均以邮件的方式发送至指定的用户邮箱中;
邮箱的发送:
mail命令
mail [-s SUBJECT] USERNAME[@DOMAINNAME]
(Ctrd + d发送)
系统用户的邮箱的目录/var/spool/mail/
at命令的常用用法:
at, batch, atq, atrm - queue, examine or delete jobs for later execution
at [option] timespe
timespec:
1.HH:MM [YYYY-mm-dd]
2.noon,midnight,teatime
3.tomorrow
4.now+#UNIT
UNIT:minutes,hours,days,or weeks
at定义的计划任务都在某个特定的任务队列中;默认at只启用了一个at队列,通常用a表示;
用at -c 5 命令查看以后,只有最后两行是我们预先写的语句;
其不难看出通用格式:
* * * * * user-name command to be executed
分钟 小时 天 月 星期
注意:
* * * * *:定义周期性执行计划任务的具体时间;
user-name:执行此任务的用户;
command to be executed:此次计划任务的执行主体,建议使用绝对路径;
用户任务:
个体性任务通常存放在/var/spool/cron/目录下的与用户名对于的文件中
此类文件格式:
* * * * * command to be execute
时间表示法:
1.某个特定时间:给定的时间点的有效取值范围内的所有有效值;
0 3 4 9 * (9月4日3点整执行脚本)
2.通配符时间:"*",表示"每..."的意思;
3.离散的时间点:
0 8,20 * * 1,2,4,5 (周1、2、4、5的8点和20点整执行脚本)
4.连续的时间段
0-10 8-12 * * *
5.步进时间:
*/3 * * * * 每三分钟执行一次
*/9 * * * *:无法真正实现每9分钟执行一次;因此默认情况下,步进长度应该是能够被60整除的数字;
注意:最小的时间单位是分钟,如果计划使用不足一分钟的若干秒为执行周期,则必须借助于其他的机制,如:编写shell脚本;
crontab命令:
crontab [-u user] file
crontab [-u user] [-l | -r | -e] [-i] [-s]
-u user:超级用户为自己或其他用户设置或编辑周期性任务时使用的选项;
-l:查看所有的已经被定义好的计划任务列表;
-e:使用vi编辑器编辑临时的crontab文件;
-r:移除所有的计划任务;建议谨慎使用;
-i:在使用-r选项时,能够进行交互式删除;
crontab -e
* * * * * root /usr/bin/date
ls /var/spool/cron/root
里边就会有刚才写的脚本;
查看邮件内容
显示日期;