Chinaunix首页 | 论坛 | 博客
  • 博客访问: 947081
  • 博文数量: 104
  • 博客积分: 1919
  • 博客等级: 上尉
  • 技术积分: 1910
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-21 16:33
文章分类
文章存档

2016年(4)

2015年(1)

2014年(6)

2013年(16)

2012年(27)

2011年(49)

2010年(1)

分类: LINUX

2013-07-25 15:46:15

一、Crontab介绍
     crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

 /etc/crontab文件

/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab      

如:

[root@dave ~]# cat /etc/crontab

SHELL=/bin/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


二、Contab使用说明
2.1 Contab语法   

usage:  crontab [-u user] file

        crontab [-u user] [ -e | -l | -r ]

                (default operation is replace, per 1003.2)

        -e      执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说                                                  setenv VISUAL joe)

        -l      列出用户的时程表

        -r      删除用户的时程表
                  -v              列出用户cron作业的状态 

        -i      删除用户时程表前提示

       其中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。

 2.2 格式说明
        我们可以用crontab -e 添加要执行的命令。

    
   添加的命令必须以如下格式:

    * * * * * command path

    前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spacestabs分割。

        前5个字段分别表示:        

       分钟:0-59

       小时:1-23

       日期:1-31

       月份:1-12

       星期:0-60表示周日)

        还可以用一些特殊符号:        

       *: 表示任何时刻

       ,: 表示分割

     -:表示一个段,如第二端里: 1-5,就表示15

       /n : 表示每隔n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.

2.3  详细使用方法
        用VI编辑一个文件 cronfile,然后在这个文件中输入格式良好的时程表。编辑完成后,保存并退出。

在命令行输入

$: crontab cronfile

这样就将cronfile文件提交给c r o n进程,同时,新创建cronfile的一个副本已经被放在/ v a r / s p o o l / c r o n目录中,文件名就是用户名。

启动cron进程的方法:/etc/init.d/crond start 
开机就启动cron进程的设置命令:chkconfig --add crond
把cron加入到启动脚本中:# rc-update add vixie-cron default

三、示例

通过 /etc/crontab 文件,可以设定系统定期执行的任务,当然,要想编辑这个文件,得有root权限

0 7   *    *   *    root    mpg123 ~/wakeup.mp3 
分 时 日 月 周

示例:
0 4  * * 0     root emerge --sync && emerge -uD world              #每周日凌晨4点,更新系统 

0 2 1 * *     root   rm -f /tmp/*                                                    #每月1号凌晨2点,清理/tmp下的文件 
0 8 6 5 *   root     mail  robin < /home/galeki/happy.txt             #每年5月6日早8点给robin发信祝他生日快乐

假如,我想每隔2分钟就要执行某个命令,或者我想在每天的6点、12点、18点执行命令,诸如此类的周期,可以通过 “ / ” 和 “ , ” 来设置:

*/2   *   *   *   *           root      ...............      #每两分钟就执行........ 
0 6,12,18   *   *   *    root      ...............      #每天6点、12点、18点执行........

每两个小时:

0 */2 * * * echo "have a break now." >> /tmp/test.txt

晚上11点到早上8点之间每两个小时,早上八点:

0 23-8/2,8 * * * echo "have a good dream:)" >> /tmp/test.txt

每个月的4号与每个礼拜的礼拜一到礼拜三的早上11点:

0 11 4 * 1-3 command line

1月1日早上4点:

0 4 1 1 * command line

阅读(1540) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~