一、定期的任务执行,简称任务计划
在这些指定的任务执行时,不会显示到屏幕上,而是以邮件的方式发送给任务的发起者:mail
1.在未来的某个时间仅执行一次
使用"at"或者"batch"进行设定,他们两个的使用方法和参数都一样,这里以"at"为例;
时间的表示法:HH:MM、NN/DD/YY或者在时间后面跟上AM/PM来表示上下午、或now+# ("#"表示几分钟或几小时或几天或几周,其单位:min、hours、days、week)
在某个时间设置要执行的任务后使用"Ctrl+d",来提交任务。
#at -l 或 #atq ---查看当前任务计划的列表
at -r JOB_NU 或atrm JOB_NU ---移除尚未执行的任务
#at -r 1
#atrm 1
at -f JOB_FILE TIME 将多个任务写进文件中,在某个时间去读取该文件,以达到某个时间执行任务
#at -f ~/job/job.txt now+1min
2.在未来周期性的去执行一个任务
在中周期的执行任务分为两类:
第一类:属于系统任务,定义一些计划,用于系统自身的日常维护和运作
例如"what is"的数据库,就是系统定期的对其进行更新
其配置文件是:/etc/crontab
内容:
SHELL=/bin/bash ---指定解释器为bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin ---为任务执行指定环境变量
MAILTO=root ---指定发送邮件的用户
HOME=/ ---使用者运行的路径,这里是根目录
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
该文件内容分为7个字段:
分钟 小时 天 月 星期 任务执行的发起者 执行的任务
[00-59] [00-23] [01-31] [01-12] [00-07] USERNAME ROLE
其中:通配:"*"
非连续时间点:","
如:每小时的15和45分钟 ------> 15,45 * * * *
连续的时间点:"- "
如:每天的凌晨3点的8-10分钟 ------> 8-10 3 * * *
每几:"*/#"
如:每三分钟执行一次 ------> */3 * * * *
注:这个文件中的命令基于bash外壳程序,所以当执行一些命令时需要指定其二进制文件所在的路径,这里使用PATH赋值,也可以在使用命令时写上其绝对路径,但要清楚的是这里的PATH和bash中的PATH是两个不同的概念。
第二类:属于用户定义的一些周期行任务
crontab 定义用户的周期任务
参数: -e:编辑计划内容
-l:列出计划内容
-r:移除所有的计划内容
以上的三个参数直接操作的是作用于当前执行"crontab"命令的用户,如:
#crontab -e ---编写周期执行的任务,保存之后会在/var/spool/cron/下生成一个和用户名同名的文件,其文件内容分为6个字段,和系统任务的字段一样,只是和系统任务比较缺少了任务的执行者这以字段
-u:为某个用户制定计划内容
#crontab -u redhat -e ---保存结束后,文件的名字将自动命名为redhat
注:所有的任务会按照预订的周期运行,其前提必须是服务器处于开机运行状态。
3.anacron:检查crontab中那些过期且没有执行的任务,默认是关闭的
其配置文件:/etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh ---指定解释器为bash
MAILTO=root ---指定发送邮件的用户
1 65 cron.daily run-parts /etc/cron.daily
7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly
四个字段意义:
• 时间间隔:执行任务的时间间隔,单位为天。
• 等待时间:在时间间隔到期后,如果任务没有顺利执行,则会等待此处设置的时间,然后再次尝试执行。
• 任务标识:有关此任务的说明,它可包含任何非空格的字符(/除外),通常都用在anacron信息中,或是此任务的时间戳文件名。
• 命令:实际执行的任务。
当任务完成后,anacron会将此日期记录在/var/spool/anacron目录的Timestamp文件中,默认的Timestamp文件有三个:cron.daily,cron.monthly和cron.weekly
本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/793051,如需转载请自行联系原作者