Chinaunix首页 | 论坛 | 博客
  • 博客访问: 511169
  • 博文数量: 119
  • 博客积分: 5054
  • 博客等级: 大校
  • 技术积分: 1305
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-03 13:13
文章分类

全部博文(119)

文章存档

2011年(4)

2010年(115)

我的朋友

分类: LINUX

2010-01-04 13:13:23

Aboute Cron:

       cron - 定期执行指定命令的守护程序 (Vixie Cron)

总览
       cron

描述
       Cron   应 该 由  /etc/rc   或 者  /etc/rc.local   启 动 ( 译 注:有很多发行版与此不同的,如 RedHat6.x 使用
       /etc/rc.d/init.d/crond )。系统会立即返回提示符状态,因此没有必要 后 缀  ’&’   来 启 动 。  Cron   在 目 录
       /var/spool/cron  下搜索以 /etc/passwd 中账户名命名的 crontab 文件,将找到的文件内容加载到内存中。 Cron 还搜
       索 /etc/crontab 和目录 /etc/cron.d/ 下的文件,但这些文件使用另外的格式。(见 crontab(5) )。 Cron 平时出 于
       休眠状态,每分钟醒来一次,检查所有储存的 crontab 文件,检查其中的每一条命令并适时执行。执行命令时,任何输出
       通过邮件发往 crontab 的拥有者(如果 crontab 中设置了 MAILTO 环境变量,就发往此变量所指的用户)。

       另外, cron 每分钟检查它的 spool 目录以及 /etc/crontab) 的 modtime 【译注:即文件的最新修改时间,在文件系 统
       的 i-node 中以 mtime 标记】,如果发生变化, cron 将检查所有 crontab 文件的 modtime ,并重新加载已改变的。这
       意味着即使修改 crontab 文件也没有必要重新启动 cron 守护程序。注意当 Crontab(1) 命令改变 crontab 时 会 刷 新
       spool 目录的 modtime 标记。

另见
       crontab(1), crontab(5)

作者
       Paul Vixie

Crontab Command:

fhc2007@fhc2007-desktop:~$ ls -l /usr/bin/crontab
-rwxr-sr-x 1 root crontab 26928 2008-04-09 02:02 /usr/bin/crontab

CRONTAB(1)                                                                                              CRONTAB(1)

NAME
       crontab - maintain crontab files for individual users (V3)

SYNOPSIS
       crontab [ -u user ] file
       crontab [ -u user ] { -l | -r | -e }

DESCRIPTION
       crontab  is  the  program used to install, deinstall or list the tables used to drive the cron(8) daemon in
       Vixie Cron.  Each user can have their own crontab, and though these are files in  /var/spool/cron/crontabs,
       they are not intended to be edited directly.

       If the /etc/cron.allow file exists, then you must be listed there in order to be allowed to use this com-
       mand.  If the /etc/cron.allow file does not exist but the /etc/cron.deny file does exist, then you must not
       be  listed in the /etc/cron.deny file in order to use this command.  If neither of these files exists, then
       depending on site-dependent configuration parameters, only the super user will be allowed to use this  com-
       mand,  or  all  users will be able to use this command. For standard Debian systems, all users may use this
       command.

       If the -u option is given, it specifies the name of the user whose crontab  is  to  be  tweaked.   If  this
       option  is  not  given, crontab examines "your" crontab, i.e., the crontab of the person executing the com-
       mand.  Note that su(8) can confuse crontab and that if you are running inside of su(8)  you  should  always
       use the -u option for safety's sake(目的, 缘故, 理由).

       The  first  form of this command is used to install a new crontab from some named file or standard input if
       the pseudo-filename ``-'' is given.

       The -l option causes the current crontab to be displayed on standard output. See the note under DEBIAN SPE-
       CIFIC below.

       The -r option causes the current crontab to be removed.

       The  -e option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR envi-
       ronment variables.  After you exit from the editor, the modified crontab will be  installed  automatically.
       If neither of the environment variables is defined, then the default editor /usr/bin/editor is used.

DEBIAN SPECIFIC
       The  "out-of-the-box"  behaviour for crontab -l is to display the three line "DO NOT EDIT THIS FILE" header
       that is placed at the beginning of the crontab when it is installed. The  problem  is  that  it  makes  the
       sequence

       crontab -l | crontab -

       non-idempotent  -- you keep adding copies of the header. This causes pain to scripts that use sed to edit a
       crontab. Therefore, the default behaviour of the -l option has been changed to not output such header.  You
       may  obtain  the original behaviour by setting the environment variable CRONTAB_NOHEADER to 'N', which will
       cause the crontab -l command to emit the extraneous header.

SEE ALSO
       crontab(5), cron(8)

FILES
       /etc/cron.allow
       /etc/cron.deny

Crontab:

CRONTAB(5)                                                                                              CRONTAB(5)

NAME
       crontab - tables for driving cron

DESCRIPTION
       A  crontab file contains instructions to the cron(8) daemon of the general form: ``run this command at this
       time on this date''.  Each user has their own crontab, and commands in any given crontab will  be  executed
       as the user who owns the crontab.  Uucp and News will usually have their own crontabs, eliminating the need
       for explicitly running su(1) as part of a cron command.

       Blank lines and leading spaces and tabs are ignored.  Lines whose first non-space character is a  hash-sign
       (#)  are  comments, and are ignored.  Note that comments are not allowed on the same line as cron commands,
       since they will be taken to be part of the command.  Similarly, comments are not allowed on the  same  line
       as environment variable settings.

       An  active  line in a crontab will be either an environment setting or a cron command.  An environment set-
       ting is of the form,

           name = value

       where the spaces around the equal-sign (=) are optional (随意的), and any subsequent  non-leading  spaces  in  value
       will  be  part  of the value assigned to name.  The value string may be placed in quotes (single or double,
       but matching) to preserve (保持、保存) leading or trailing blanks. The value string is not parsed (分列) for environmental sub-
       stitutions (置换), thus lines like

           PATH = $HOME/bin:$PATH

       will not work as you might expect.

       Several environment variables are set up automatically by the cron(8) daemon.  SHELL is set to /bin/sh, and
       LOGNAME and HOME are set from the /etc/passwd line of the crontab's owner. PATH is set to  "/usr/bin:/bin".
       HOME,  SHELL,  and  PATH  may be overridden by settings in the crontab; LOGNAME is the user that the job is
       running from, and may not be changed.

       (Another note: the LOGNAME variable is sometimes called USER on BSD systems...  on these systems, USER will
       be set also.)

       In addition to LOGNAME, HOME, and SHELL, cron(8) will look at MAILTO if it has any reason to send mail as a
       result of running commands in ``this'' crontab.  If MAILTO is defined (and non-empty), mail is sent to  the
       user  so  named.  If MAILTO is defined but empty (MAILTO=""), no mail will be sent.  Otherwise mail is sent
       to the owner of the crontab.

       On the Debian GNU/Linux system, cron supports the pam_env module, and loads the  environment  specified  by
       /etc/security/pam_env.conf.   However, the PAM setting do NOT override the settings described above nor any
       settings in the crontab file itself. Note in particular that if you want a PATH other than "/usr/bin:/bin",
       you will need to set it in the crontab file.

       By  default,  cron will send mail using the mail "Content-Type:" header of "text/plain" with the "charset="
       parameter set to the charmap / codeset of the locale in which crond(8) is  started  up  -  ie.  either  the
       default  system locale, if no LC_* environment variables are set, or the locale specified by the LC_* envi-
       ronment variables ( see locale(7)).  You can use different character encodings for mailed cron  job  output
       by  setting  the CONTENT_TYPE and CONTENT_TRANSFER_ENCODING variables in crontabs, to the correct values of
       the mail headers of those names

       The format of a cron command is very much the V7 standard, with a number of  upward-compatible  extensions.
       Each  line  has  five  time and date fields, followed by a command, followed by a newline character ('n').
       The system crontab (/etc/crontab) uses the same format, except that the username for the command is  speci-
       fied  after the time and date fields and before the command. The fields may be separated by spaces or tabs.

       Commands are executed by cron(8) when the minute, hour, and month of year fields match  the  current  time,
       and  when  at  least  one  of the two day fields (day of month, or day of week) match the current time (see
       ``Note'' below).  cron(8) examines cron entries once every minute.  The time and date fields are:

              field          allowed values
              -----          --------------
              minute         0-59
              hour           0-23
              day of month   1-31
              month          1-12 (or names, see below)
              day of week    0-7 (0 or 7 is Sun, or use names)

       A field may be an asterisk (*) (星号通配符), which always stands for ``first-last''.

       Ranges of numbers are allowed.  Ranges are two numbers separated with a hyphen (连接符).   The  specified  range  is
       inclusive (包含的).  For example, 8-11 for an ``hours'' entry specifies execution at hours 8, 9, 10 and 11.

       Lists  are  allowed.   A  list is a set of numbers (or ranges) separated by commas (逗号).  Examples: ``1,2,5,9'',
       ``0-4,8-12''.

       Step values can be used in conjunction (结合) with ranges.  Following a range with ``/''  specifies  skips
       of the number's value through the range.  For example, ``0-23/2'' can be used in the hours field to specify
       command    execution    every    other    hour    (the    alternative    in    the    V7    standard     is
       ``0,2,4,6,8,10,12,14,16,18,20,22'').   Steps  are  also  permitted after an asterisk, so if you want to say
       ``every two hours'', just use ``*/2''.

       Names can also be used for the ``month'' and ``day of week'' fields.  Use the first three  letters  of  the
       particular day or month (case doesn't matter).  Ranges or lists of names are not allowed.

       The  ``sixth'' field (the rest of the line) specifies the command to be run.  The entire command portion of
       the line, up to a newline or % character, will be executed by /bin/sh or by  the  shell  specified  in  the
       SHELL  variable  of the crontab file.  Percent-signs (%) in the command, unless escaped with backslash (),
       will be changed into newline characters, and all data after the first % will be  sent  to  the  command  as
       standard input. There is no way to split a single command line onto multiple lines, like the shell's trail-
       ing "".

       Note: The day of a command's execution can be specified by two fields -- day of month, and day of week.  If
       both  fields are restricted (i.e., aren't *), the command will be run when either field matches the current
       time.  For example,
       ``30 4 1,15 * 5'' would cause a command to be run at 4:30 am on the 1st and 15th of each month, plus (并且)  every
       Friday.

       Instead of the first five fields, one of eight special strings may appear:

              string         meaning
              ------         -------
              @reboot        Run once, at startup.
              @yearly        Run once a year, "0 0 1 1 *".
              @annually      (same as @yearly)
              @monthly       Run once a month, "0 0 1 * *".
              @weekly        Run once a week, "0 0 * * 0".
              @daily         Run once a day, "0 0 * * *".
              @midnight      (same as @daily)
              @hourly        Run once an hour, "0 * * * *".

EXAMPLE CRON FILE
       # use /bin/bash to run commands, instead of the default /bin/sh
       SHELL=/bin/bash
       # mail any output to `paul', no matter whose crontab this is
       MAILTO=paul
       #
       # run five minutes after midnight, every day
       5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
       # run at 2:15pm on the first of every month -- output mailed to paul
       15 14 1 * *     $HOME/bin/monthly
       # run at 10 pm on weekdays, annoy Joe
       0 22 * * 1-5    mail -s "It's 10pm" joe%Joe,%%Where are your kids?%
       23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
       5 4 * * sun     echo "run at 5 after 4 every sunday"

EXAMPLE SYSTEM CRON FILE
       This has the username field, as used by /etc/crontab.
       # /etc/crontab: system-wide crontab
       # Unlike any other crontab you don't have to run the `crontab'
       # command to install the new version when you edit this file
       # and files in /etc/cron.d. These files also have username fields,
       # that none of other the crontabs do.

       SHELL=/bin/sh
       PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

       # m h dom mon dow user    command
       42 6 * * *        root    run-parts --report /etc/cron.daily
       47 6 * * 7        root    run-parts --report /etc/cron.weekly
       52 6 1 * *        root    run-parts --report /etc/cron.monthly
       #
       # Removed invocation (调用) of anacron, as this is now handled by a
       # /etc/cron.d file

SEE ALSO
       cron(8), crontab(1)

注释、补遗

crontab的文件格式:
一个系统中的所有crontab文件都使用一种类似的格式,在每一行的第一列中使用“#”号来引入注释,每个非注释行包含了6或7个字段,它代表了一条命令:

minute    hour    day    month    weekday    [username]    command

前6个字段用空白符隔开,但在command字段中的空白符则按照原意对待。username 字段只出现在/etc/crontab文件和/etc/cron.d目录下的文件里,它指出命令应该以哪个用户的身份运行。这个字段不会也没有必要出现在用户自己的crontab文件中,因为文件名本身就暗含了UID。
minute、hour、day、month和weekday给出了关于命令应该何时运行的信息。它们的解释如下表:

时间范围可以包含一个步长值,例如,时间序列0、3、6 、9、12、15、18可以简洁的写成0-18/3。月份和日期的名字也可以使用易记的文字名,但此时不能连同“表示范围的方式”一起使用。
时间格式

45    10    *    *    1-5

的意思是“上午10:45,从周一到周五”。提示:不要把星号放在第一个字段中,除非你想让这个命令每分钟都运行。
注意day字段和weekday字段有潜在的二义性。每一天既是星期中的一天,也是月中的一天。如果同时指定了day字段和weekday字段,满足两个条件之一的天就被选中。例如,

0,30    *    13    *    5

的意思是“星期五每半个小时,以及每月13号每半个小时”,而不是“既是13号又是星期五的那天每半个小时”。
command 就是要执行的sh命令行。它可以是任何有效的shell命令,而且不应该加引号。cron 认为 command 一直是到这行的末尾,它可以包含空格或制表符。
cron 使用百分号(%)来表示 command 字段中的换行。只有到第一个百分号前的文本才会包含在实际的命令中,其余则作为该命令的标准输入。
例如下面的一些合法的crontab命令:

echo The time is now `date` > /dev/console
mail -s Reminder evi@ancor % Don't forget to write your chapters.
cd /etc; /bin/mail -s "Password file" evi < passwd
阅读(1207) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~