Linux crontab 用法分析

来源:互联网 发布:疯狂淘宝李涛微博 编辑:程序博客网 时间:2024/06/04 19:59

crontab是Linux平台上实现任务定时调度的功能。

基本格式如下:

*      *     *     *      *    command

分    时    日    月     周   命令

0-59  0-23 1-31  1-12  0-6 command

特殊符号的含义:

*:代表取值范围内的数字

/:代表“每”

-:代表从某个数字到某个数字

,:代表分散几个离散的数字

与crontab服务相关的几个命令:

1)查看crontab是否开启(两种方法)

方法一:ps –ef|grep crond


方法二:service crond status


2)crontab服务启动与关闭相关命令

启动crontab服务: /sbin/service crond start

关闭crontab服务: /sbin/service crond stop

重启crontab服务: /sbin/service crond restart

重新载入crontab服务: /sbin/service crond reload

3)如何编辑crontab任务(两种方式)

(1)针对系统任务(在/etc/crontab中添加)

(2)针对具体用户任务(通过crontab –e 添加)

实际上,crond服务每分钟不仅要读一次/var/spool/cron内的所有文件(这里面有各个用户的任务),还需要读一次/etc/crontab。因此,我们可以知道当我们修改了配置文件,最长一分中内生效。

4)crontab中常用的几个命令

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

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

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

5)举几个crontab的栗子:

30 21 * * * /usr/local/etc/rc.d/lighttpdrestart

每晚21:30重启apache

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpdrestart

每月1、10、22日的4:45重启apache

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpdrestart

每周六、周日的1:10重启apache

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpdrestart

每天18:00至23:00之间每隔30分钟重启apache

0 23 * * 6 /usr/local/etc/rc.d/lighttpdrestart

每星期六的11:00 pm重启apache

* */1 * * * /usr/local/etc/rc.d/lighttpdrestart

每小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpdrestart

晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * * /usr/local/etc/rc.d/lighttpdrestart

每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpdrestart

一月一号4点重启apache

关于上面举的crontab栗子的总结:

首先要明白有5个时间参数,默认是*,即代表所有可能取值,取值的范围见上面基本格式的最后一行,如果将5个参数都设置为*,则粒度是最细的即:每月每周每日每小时每分钟,然后,我们根据需要,去泛化这些取值,便可以实现不同的任务调度需求。比如:我想要每三分中执行一次:则将之前本来分钟可能取值为1到59的范围除以3,即可实现每三分执行一次,命令如下:

*/3 * * * * 你需要执行的命令

6)问题:crontab中任务如果执行出错了呢?

比如正对root用户的crontab,可以在 /var/spool/mail/root文件中,查看crontab的执行日志记录。比如:


将echo命令写成cho,然后,运行crontab命令如下:


打开/var/spool/mail/zhou.hg可以看到如下日志:

原创粉丝点击