6.6. 配置 cron

Contributed by Tom Rhodes.

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

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

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

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

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

6.6.1. 安装 Crontab

要安装刚才写的 crontab,只需要用 crontab 命令。大多数普通的用法是:

# crontab crontab

还有一个选项来列出安装的 crontab 文件,只要传递 -lcrontab 然后看一下输出。

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