「crontab(1)」-

  LINUX MANUAL PAGES

为个人用户维护crontab文件(Vixie Cron)

命令语法格式

crontab [ -u user ] file

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

命令描述

命令crontab是用于安装、卸载、列出用于驱动cron(8)守护进程的表。每个用户都可以拥有自己的crontab,位于/var/spool/cron/crontabs/中,但它们并不是直接编辑的。

如果/etc/cron.allow存在,则必须在其中列出(每行一个用户)后才能允许使用crontab命令。如果/etc/cron.allow不存在,但/etc/cron.deny文件存在,则在/etc/cron.deny文件中的用户不允许使用此命令。

如果这两个文件都不存在,那么根据站点相关的配置参数,只允许超级用户使用此命令,或者所有用户都可以使用此命令。

如果两个文件都存在,则/etc/cron.allow优先。这意味着不考虑/etc/cron.deny的配置,并且您的用户必须列在/etc/cron.allow中才能使用crontab命令。

无论是否存在任何这些文件,始终允许root管理用户设置crontab。对于标准Debian系统,默认所有用户都可以使用此命令。

命令支持的选项及含义

-u
如果给出-u选项,则它指定一个用户名,表示对该用户的crontab文件进行查看或修改。如果没有给出这个选项,命令crontab会检查“当前用户”的crontab文件,即执行crontab命令的用户的crontab文件。

注意su(8)可以混淆crontab命令,如果你在su(8)内运行crontab命令,你应该总是使用-u选项以保证安全。

第一种形式的命令crontab [ -u user ] file用于安装crontab文件。如果给出伪文件名“-”,则此命令从标准输入安装新的crontab文件。

-l
在标准输出上显示当前的crontab文件。请参阅下面的“DEBIAN SPECIFIC”下的说明。

-r
删除当前的crontab。

-e
使用VISUAL或EDITOR环境变量指定的编辑器来编辑当前的crontab文件。退出编辑器后,将自动安装修改过的crontab。如果未定义任何环境变量,则使用默认编辑器/usr/bin/editor。

-i
修改-r选项,在实际删除crontab文件之前,提示用户输入“y/Y”响应。

注意事项

在Debian中特定的规则

命令crontab -l的“开箱即用”行为是:在显示安装时,显示位于crontab开头的三行“DO NOT EDIT THIS FILE”标题。问题是它会使头部

# crontab -l | crontab –

叠加,不断添加标题的副本。 这会导致使用sed编辑crontab的脚本感到痛苦。 因此,选项-l的默认行为已更改为不输出此类标头。您可以通过将环境变量CRONTAB_NOHEADER设置为“N”来获取原始行为,这将导致crontab -l命令发出无关的标头。

其他注意事项

命令crontab符合IEEE Std1003.2-1992(“POSIX”)。 这种新的命令语法不同于以前版本的Vixie Cron,以及经典的SVR3语法。

如果使用错误的命令行运行它,则会显示相当详细的用法消息。

守护进程cron要求crontab中的每个条目以换行符结尾。 如果crontab中的最后一个条目缺少换行符,cron将认为crontab(至少部分)已损坏并拒绝安装它。

在/var/spool/cron/crontabs/下的文件根据用户的帐户名称命名。 由于本地系统或者中央用户数据库(例如LDAP)管理帐户的更改,因此不会为其帐户已重命名的用户运行Crontab作业。

相关文件

/etc/cron.allow
允许用户列表。

/etc/cron.deny
禁止用于列表。

/var/spool/cron/crontabs/
用户个人的crontab文件所在的目录。

在/var/spool/cron/crontabs下,每个用户都有一个自己的crontab文件。 不允许用户直接编辑该目录下的文件,以确保只有系统允许运行定期任务的用户才能添加它们,并且只能在语法上正确的crontab文件才能写入这里。通过使目录仅由crontab组写入,并使用为该特定组设置的setgid位配置crontab命令来强制执行此操作。

相关手册

crontab(5), cron(8)

参考文献

  • man 1 crontab, Version 3.0pl1-130

更新日志

  • 08/16/2018 创建文章