Linux cron job 详解

来源:互联网 发布:ibeer free软件可乐 编辑:程序博客网 时间:2024/05/23 15:30
Linux cron job 是个非常常用的工具,用来在指定的时间执行某个任务。现对它的用法和配置进行详细的说明。

概述

cron工具是一个以系统服务的形式存在。通过/etc/rc.d/init.d 或者 /etc/init.d目录下的启动脚本crond来启动。 也可能直接通过 service crond start 命令来启动。

cron不停地检查所有配置的任务在当前是否应该运行,任务运行的最小时间间隔是1分钟,也就是说任务最频繁只能每分钟运行一次。

任务文件(crontab 文件)

cron 读取任务文件(crontab 文件)来获取系统上所安装的任务。任务文件包含了任务指令(告诉cron进程在哪些时间执行某个任务)。任务文件遵行以下规则:
1. 空行会被忽略
2. 每行开头的空白字符会被忽略
3. 第一个非空白字符是#的行被认为是注释,会被忽略
4. 文件的属性默认情况下只能为0644。此限制可以通过在启动cron进程时指定 -p 参数来避免。

任务文件包除了以上3种被忽略的内容外,主要有两种形式的有效行。一种用于设置执行此任务文件中任务时环境变量;一种是任务指令行,用于告诉cron进程在何时执行某个任务。

设置环境变量行的格式为
    name = value
“=”两边的空白是可有可无的,有则会被忽略。
SHELL:     会被自动设置为/bin/sh。
LOGNAME:   会根据任务的所有者和/etc/passwd进行自动设置, 在BSD系统上此变量叫着USER。
HOME:      会根据任务的所有者和/etc/passwd进行自动设置。
MAILTO:    cron在需要的时候会根据此变量向此变量所指定的用户发送邮件。如果此变量定义为空即(MAILTO="")则不会发送邮件。如果此变量未指定则会向此任务的所有者发送邮件。
CRON_TZ:  指定此任务按照此变量的时区运行。
MLS_LEVEL:配置SELinux多重安全级别。

任务指令行包括五个时间日期域,接着一个用户域(如果是系统级的任务文件),其余的被当做是此任务的命令行。
下图显示系统级任务文件中的指令行的格式:

Linux <wbr>cron <wbr>job <wbr>详解

对于前五个时间日期域的有效格式可以是:
*: 表示有效值范围内的任务值
列表:是用逗号分隔的多个值,可以包含区间。例:"1,3,7" 或 "1,2,4-8,12-23"
步进:如分钟域为“*/2”或 "0-59/2" 表示每两分钟执行一次。
对于月和星期可以是英语单词的前三个字母,不区分大小写。如 feb, sun等。


cron 会从如下这些地方读取安装的任务:
1. /etc/anacrontab
这个文件存着系统级的任务。它主要用来运行每日的(daily),每周的(weekly),每月的(monthly)的任务。一般 不在此文件安装自己的任务。以下是/etc/anacrontab内容的一个例子:
Linux <wbr>cron <wbr>job <wbr>详解


2. /etc/cron.d/
此目录下存放的是系统级任务的任务文件。
Linux <wbr>cron <wbr>job <wbr>详解

3. /var/spool/cron/
此目录下存放各个用户的任务文件。各个用户的任务存放在以自已用户名为文件名的任务文件中。此文件中的指令行没有用户域。
Linux <wbr>cron <wbr>job <wbr>详解


新任务安装后或任务修改后不需要重启cron进程即可生效。

日志文件
可以通过查看文件/var/log/cron查看任务的运行情况。
0 0
原创粉丝点击