以下各节介绍如何创建、编辑、显示和删除 crontab 文件,以及如何控制对这些文件的访问。
cron 守护进程会根据在每个 crontab 文件中找到的命令来调度系统任务。crontab 文件由命令组成,每个命令占据一行,这些命令将以固定间隔执行。每行开头包含日期和时间信息,以告知 cron 守护进程何时执行命令。
例如,在 SunOS 软件安装期间将提供名为 root 的 crontab 文件。该文件的内容包括以下命令行:
10 3 * * * /usr/sbin/logadm (1) 15 3 * * 0 /usr/lib/fs/nfs/nfsfind (2) 1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 (3) 30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean (4) |
下面介绍了上述每个命令行的输出:
第一行在每天凌晨 3:10 运行 logadm 命令。
第二行在每个星期日凌晨 3:15 执行 nfsfind 脚本。
第三行在每天凌晨 2:10 运行用于检查夏时制时间(并根据需要进行更正)的脚本。
如果没有 RTC 时区,也没有 /etc/rtc_config 文件,则此项不执行任何操作。
/usr/sbin/rtc 脚本只能在基于 x86 的系统上运行。
第四行在每天凌晨 3:30 检查(并删除)通用安全服务表 /etc/gss/gsscred_db 中的重复项。
有关 crontab 文件中各行语法的更多信息,请参见crontab 文件项的语法。
crontab 文件存储在 /var/spool/cron/crontabs 目录中。在 SunOS 软件安装期间,会提供包括 root 在内的若干个 crontab 文件。请参见下表。
表 8–2 缺省 crontab 文件
crontab 文件 |
功能 |
---|---|
adm |
记帐 |
lp |
打印 |
根 |
一般系统功能和文件系统清除 |
sys |
性能数据收集 |
uucp |
一般 uucp 清除 |
除了缺省的 crontab 文件之外,用户还可以创建 crontab 文件,以调度自己的系统任务。其他 crontab 文件按用来创建它们的用户帐户名称(如 bob、mary、smith 或 jones)命名。
要访问属于 root 或其他用户的 crontab 文件,需要具有超级用户权限。
后续各节介绍了说明如何创建、编辑、显示和删除 crontab 文件的过程。
cron 守护进程可管理 crontab 命令的自动调度。cron 守护进程将检查 /var/spool/cron/crontab 目录中是否存在 crontab 文件。
cron 守护进程在启动时执行以下任务:
检查新的 crontab 文件。
阅读文件中列出的执行时间。
在适当时间提交执行命令。
侦听来自 crontab 命令的有关更新的 crontab 文件的通知。
cron 守护进程以几乎相同的方式来控制 at 文件的调度。这些文件存储在 /var/spool/cron/atjobs 目录中。cron 守护进程还侦听来自 crontab 命令的有关已提交的 at 作业的通知。
crontab 文件由命令组成,每个命令占据一行,这些命令将按每个命令行的前五个字段指定的时间自动执行。下表中介绍了这五个字段,它们以空格分隔。
表 8–3 crontab 时间字段的可接受值
时间字段 |
值 |
---|---|
分钟 |
0-59 |
小时 |
0-23 |
月中某日 |
1-31 |
月份 |
1-12 |
星期中某日 |
0-6(0 = 星期日) |
在 crontab 时间字段中使用特殊字符时请遵循以下规则:
使用空格分隔每个字段。
使用逗号分隔多个值。
使用连字符指定某一范围的值。
使用星号作为通配符来包括所有可能值。
在一行开头使用注释标记 (#) 来表示注释或空白行。
例如,以下 crontab 命令项将于每月第一天和第十五天下午 4 点在用户的控制台窗口中显示提醒。
0 16 1,15 * * echo Timesheets Due > /dev/console |
crontab 文件中的每个命令必须只占据一行,即使这一行非常长也是如此。crontab 文件不识别额外的回车。有关 crontab 项和命令选项的更多详细信息,请参阅 crontab(1) 手册页。