天天看点

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

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,如需转载请自行联系原作者