您的位置:首页 > 运维架构 > Linux

linux 下定时执行工具cron

2010-12-14 11:47 176 查看
转载:http://os.51cto.com/art/201001/176436.htm
Linux经过十多年的发展,很多用户都很了解Linux了,这里介绍一下Linux下cron的理解,和大家讨论讨论。cron是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业,本文档不讲cron实现原理,主要讲一下Linux定时执行工具cron的具体使用及简单介绍。
新增调度任务
推荐使用crontab -e命令添加自定义的任务(编辑的是/var/spool/cron下对应用户的cron文件),退出后重启crond进程,虽然官方文档描述为“crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。”,但我曾经遇到不重启无法运行任务的情况(也许因为某些系统crontab是读到内存中的,修改完/etc/crontab后并没有马上执行),可以使用如下方式重新启动cron服务或重新加载cron配置
/etc/rc.d/init.d/crond restart  service cron reload


同样,我们也可以直接修改/etc/crontab文件来新建任务,/etc/crontab文件内容默认如下:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/sbin:/usr/bin

MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号

HOME=///使用者运行的路径,这时是根目录

# run -parts

01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本

02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本

22 4 * * 0 root run-parts /etc/cron.weekly //每周执行/etc/cron.weekly内的脚本

42 4 1 * * root run-parts /etc/cron.monthly //每月执行/etc/cron.monthly内的脚本

注意:

"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某表脚本名,而不是文件夹的名了。

/etc/cron.hourly/ ,/etc/cron.dail/ 、cron.weekly/ 、cron.monthly/ 存放着系统预先制定的cron的任务

/etc/crontab文件语法如下:

MinuteHour   Day    Month Dayofweekcommand

分钟   小时天  月   天每星期命令

每个字段代表的含义如下:

Minute 每个小时的第几分钟执行该任务

Hour   每天的第几个小时执行该任务

Day每月的第几天执行该任务

Month 每年的第几个月执行该任务

DayOfWeek每周的第几天执行该任务

Command 指定要执行的程序

在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。

同时,cron支持类似正则表达式的书写,支持如下几个特殊符号定义:

"*"代表取值范围内的数字,

"/"代表"每",

"-"代表从某个数字到某个数字,

","分开几个离散的数字

举例如下:

5 * ***ls 指定每小时的第5分钟执行一次ls命令

305 ***ls 指定每天的 5:30 执行ls命令

307 8   **ls 指定每月8号的7:30分执行ls命令

50   7 * **rootrun-parts/etc/cron.daily   每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件[注:run-parts参数表示,执行后面目录中的所有可执行文件,如果单独执行某个脚本的话,是不需要增加run-parts参数的。]

服务管理

service cron start

service cron stop

service cron restart

service cron reload//启新载入配置

命令选项

-u 指定一个用户

-l 列出某个用户的任务

-r 删除某个用户的任务

-e 编辑某个用户的任务

如:

crontab -u //指定某个用户的cron服务

crontab -l //列出某个用户的cron服务的详细内容

crontab -r //删除某个用户的cron服务

crontab -e //编辑某个用户的cron服务

任务分类

系统工作:系统周期性所要执行的工作,如备份系统数据、清理缓存,系统工作一般都定义在/etc/crontab文件中

个人工作:某个用户定期要做的工作,如清理3天前的文件

cron用户限制

我们可以对不同用户设置限制,比如允许user1使用cron服务,而user2不允许使用cron服务;可以通过编辑如下两个文件实现这个策略:

/etc/cron.deny    被记录在此的用户不能使用cron任务

/etc/cron.allow   被记录在此的用户可以使用cron任务

注意:如果两个文件都不存在,则默认所有用户均可以使用cron服务

其它:

/var/spool/cron/   该目录下存放所有用户的cron服务

/var/log/cron   记录cron运行的日志信息。以上就是Linux定时执行工具cron的具体使用及简单介绍。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: