Linux中系统cron-阿里云开发者社区

开发者社区> 开发与运维> 正文

Linux中系统cron

简介:

一、定期的任务执行,简称任务计划
在这些指定的任务执行时,不会显示到屏幕上,而是以邮件的方式发送给任务的发起者: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
PATH=/sbin:/bin:/usr/sbin:/usr/bin        ---为任务执行指定环境变量
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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章