日期:2014-05-16  浏览次数:20542 次

Unix crontab at 定时任务命令

Unix系统提供了cron和at命令,使系统和用户可以定时运行一定的程序,而不需手工启动。

普通用户也可以使用crontab命令来创建和维护自己的crontab文件。由于是用户不能更改执行程序的标识的,因此用户的crontab就不需第六列──执行程序的用户身份,而只要直接跟随要执行的命令。使用 “crontab -e” 命令,使用编辑器按照相应的格式编辑自己的crontab文件,或者使用 “crontab -l ” 列出现有crontab文件的内容,当然只有root用户才能查看其他用户的crontab文件:

一般是执行crontab -e <username>,然后在里面填内容,可以man crontab获得帮助
根用户的 crontab 文件放在 /var/spool/crontab/root 中,其格式如下:

  (1)  (2)  (3)  (4)  (5)  (6)
   0   0   *   *   3   /usr/bin/updatedb
      1. 分钟 (0-60)
      2. 小时 (0-23)
      3. 日 (1-31)
      4. 月 (1-12)
      5. 星期 (1-7)
      6. 所要运行的程序

-----------------------------------------------  
定时执行crontab使用方法详解    
  使用方式:    
  crontab   [   -u   user   ]   filecrontab   [   -u   user   ]   {   -l   |   -r   |   -e   }    
  说明:    
  crontab   是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u   user   是指设定指定   user   的时程表,这个前提是你必须要有其权限(比如说是   root)才能够指定他人的时程表。如果不使用   -u   user   的话,就是表示设定自己的时程表。    
  参数:
  -e:执行文字编辑器来设定时程表,内定的文字编辑器是   VI,如果你想用别的文字编辑器,则请先设定   VISUAL   环境变数来指定使用那个文字编辑器(比如说   setenv   VISUAL   joe)    
  -r:删除目前的时程表    
  -l:列出目前的时程表    
   
  时程表的格式如下:    
  f1   f2   f3   f4   f5   program    
   
  其中   f1   是表示分钟,f2   表示小时,f3   表示一个月份中的第几日,f4   表示月份,f5   表示一个星期中的第几天。program   表示要执行的程式。    
  当   f1   为   *   时表示每分钟都要执行   program,f2   为   *   时表示每小时都要执行程式,其余类推    
  当   f1   为   a-b   时表示从第   a   分钟到第   b   分钟这段时间内要执行,f2   为   a-b   时表示从第   a   到第   b   小时都要执行,其余类推    
  当   f1   为   */n   时表示每   n   分钟个时间间隔执行一次,f2   为   */n   表示每   n   小时个时间间隔执行一次,其余类推    
  当   f1   为   a,   b,   c,...   时表示第   a,   b,   c,...   分钟要执行,f2   为   a,   b,   c,...   时表示第   a,   b,   c...个小时要执行,其余类推    
  使用者也可以将所有的设定先存放在档案   file   中,用   crontab   file   的方式来设定时程表。    
  例子:    
  每月每天每小时的第   0   分钟执行一次   /bin/ls:    
  0   7   *   *   *   /bin/ls    
   
  在   12   月内,   每天的早上   6   点到   12   点中,每隔   20   分钟执行一次   /usr/bin/backup:    
  0   6-12/3   *   12   *   /usr/bin/backup    
   
  周一到周五每天下午   5:00   寄一封信给   alex@domain.name: