FreeBSD 使用手册
上一页 | 第11章 　设置和调整 | 下一页

# 11.6 配置 `cron`

Contributed by Tom Rhodes.

FreeBSD 最有用的软件包(utilities)中的一个是 cron(8)。 `cron` 软件在后台运行并且经常检查 `/etc/crontab` 文件。`cron` 软件也检查 `/var/cron/tabs` 目录，搜索新的 `crontab` 文件。这些 `crontab` 文件存储一些 `cron` 在特定时间执行任务的信息。

`cron` 程序使用两种不同类型的配置文件， 即系统 crontab 和用户 crontabs。 两种格式的唯一区别是第六个字段。 在系统 crontab 中，第六个字段是用于执行命令的用户名。 这给予了系统 crontab 以任意用户身份执行命令的能力。 在用户 crontab 中， 第六个字段是要执行的命令， 所有的命令都会以这个用户自己的身份执行； 这是一项重要的安全功能。

> 注意: 同其他用户一样， `root` 用户也可以有自己的 crontab。 它不同于 `/etc/crontab` (也就是系统 crontab)。 由于有系统 crontab 的存在， 通常并不需要给 `root` 建立单独的用户 crontab。

让我们来看一下 `/etc/crontab` 文件：

    # /etc/crontab - root's crontab for FreeBSD
    #
    # $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
    #
    #
    SHELL=/bin/sh
    PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
    HOME=/var/log
    #
    #
    #minute	hour	mday	month	wday	who	command
    #
    #
    */5	*	*	*	*	root	/usr/libexec/atrun

  像大多数 FreeBSD 配置文件一样，`#` 字符是注释。 这样， 就可以编写注释来说明要执行什么操作， 以及这样做的原因。 需要注意的是， 注释应该另起一行， 而不能跟命令放在同一行上， 否则它们会被看成命令的一部分。 这个文件中的空行会被忽略。
  首先应该定义环境变量。等号 (`=`) 字符用来定义任何环境变量，像这个例子用到了 `SHELL`，`PATH` 和 `HOME` 变量。如果 shell 行被忽略掉，`cron` 将会用默认值 `sh`。如果 `PATH` 变量被忽略， 那么就没有默认值并且需要指定文件绝对位置。如果 `HOME` 被忽略，`cron` 将用用执行者的 home 目录。
  这一行定义了七个字段。它们是 `minute`、 `hour`、`mday`、 `month`、`wday`、 `who` 和 `command`。 它们差不多已经说明了各自的用处。Minute 是命令要运行时的分钟，Hour 跟 minute 差不多，只是用小时来表示。Mday 是每个月的天。Month 跟 hour 还有 minute 都差不多，用月份来表示。wday 字段表示星期几。 所有这些字段的值必须是数字并且用24小时制来表示。“who” 字段是特别的，并且只在 `/etc/crontab` 文件中存在。 这个字段指定了命令应该以哪个用户的身份来运行。当一个用户添加了他(她)的 `crontab` 文件的时候，他们就会没有这个字段选项。最后，是 `command` 字段。这是最后的一个字段， 所以自然就是它指定要运行的程序。
  最后一行定义了上面所说的值。注意这里我们有一个 `*/5` 列表，紧跟着是一些 `*` 字符。`*` 字符代表“开始到最后”， 也可以被解释成 每次。所以，根据这行， 显然表明了无论在何时每隔 5 分钟以 `root` 身份来运行 `atrun` 命令。查看 atrun(8) 手册页以获得 `atrun` 的更多信息。

  命令可以有任意多个传递给它们的标志。无论怎样， 扩展到多行的命令应该用反斜线(“\”)来续行。

这是每个 `crontab` 文件的基本设置， 虽然它们有一个不同。第六行我们指定的用户名只存在于系统 `/etc/crontab` 文件。这个字段在普通用户的 `crontab` 文件中应该被忽略。

## 11.6.1 安装 Crontab

> 重要: 绝对不要用这种方法来编辑/安装系统 crontab。 您需要做的只是使用自己喜欢的编辑器： `cron` 程序会注意到文件发生了变化， 并立即开始使用新的版本。参见 这个 FAQ 项目 以了解进一步的情况。

要安装刚写好的用户 `crontab`， 首先使用最习惯的编辑器来创建一个符合要求格式的文件，然后用 `crontab` 程序来完成。最常见的用法是：

    % crontab crontab-file

在前面的例子中， `crontab-file` 是一个事先写好的 `crontab`。

还有一个选项用来列出安装的 `crontab` 文件： 只要传递 `-l` 选项给 `crontab` 然后看一下输出。

用户想不用模板(已经存在的文件)而直接安装他的 crontab 文件，用 `crontab -e` 选项也是可以的。 它将会启动一个编辑器并且创建一个新文件，当这个文件被保存的时候， 它会自动的用 `crontab` 来安装这个文件。

如果您稍后想要彻底删除自己的用户 `crontab` 可以使用 `crontab` 的 `-r` 选项。

上一页 | 起始页 | 下一页
启动服务 | 上一级 | 在 FreeBSD 中使用 rc

本文档和其它文档可从这里下载：ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题，请先阅读文档，如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.