系统 Crontab 或根 Crontab

Spe*_*ral 21 root cron sudo

系统crontab:

/etc/crontab
Run Code Online (Sandbox Code Playgroud)

根 crontab:

sudo crontab -u root -e
Run Code Online (Sandbox Code Playgroud)

哪种方式是首选?因为他们都在管理权限内运行任务。

Ram*_*esh 24

/etc/crontab 是系统范围的 crontab。

的格式/etc/crontab是这样的:

# m h dom mon dow user      command
*   *  *   *   *  someuser  echo 'foo'
Run Code Online (Sandbox Code Playgroud)

虽然crontab -e是每个用户,但值得一提的-u是 crontab 命令不带参数地转到当前用户的 crontab。您可以crontab -e -u <username>编辑特定用户的 crontab。

请注意,在每个用户的 crontab 中没有“用户”字段。

# m h  dom mon dow  command
*   *   *   *   *   echo 'foo'
Run Code Online (Sandbox Code Playgroud)

crontab 的一个可能令人困惑的方面是 root 也有自己的 crontab。例如crontab -e -u root不会编辑/etc/crontab 请参阅配置 cron

在 Linux 发行版中,每个用户的 crontab 通常存储在: /var/spool/crontabs/<username>

参考

https://superuser.com/questions/290093/difference-between-etc-crontab-and-crontab-e

  • 正如 [Congiruring cron](http://www.freebsd.org/doc/handbook/configtuning-cron.html) 所说:通常不需要为 root 创建用户 crontab。真的吗?我的意思是标准方法是编辑 /etc/crontab,对吗? (4认同)
  • 没有“标准”方式,因此您可以同时拥有这两个文件。我通常编辑 root 的 crontab 并避免使用 `/etc/crontab` 只是因为我习惯了 `crontab -e` (4认同)

V13*_*V13 9

/etc/cron.d(及其兄弟 cron.daily/weekly/monthly)是所有系统 crontab 的首选。您不需要触摸 /etc/crontab。

如果您打算管理或自动化事物,则必须根据它们的功能将多个文件中的 cron 条目分开。/etc/cron.d 下的文件可以通过包或配置管理工具(如 puppet 和chef)轻松管理。除了人类之外,Root 的 crontab OTOH 实际上无法维护。

简而言之,对于系统内容,您可以使用 /etc/cron.*。如果您希望 root 用户执行某些操作,请使用 root 的 crontab。/etc/crontab 应该保持不变并由包管理。

  • 您没有解释为什么 root 的 crontab 应该优先于 /etc/crontab。它们都是单个文件,因此每个文件的维护问题应该是相同的。还值得注意的是,crontab 文件中的调度比 cron.* 目录中的调度要细化得多。 (2认同)
  • @CalumHalpin我认为这是由像木偶或厨师这样的舰队自动化所涵盖的,它们能够比文件中的行更好地管理独立文件。另外,“/etc/cron.d/job-name”文件可以让您为作业指定同样精细的时间表;以及设置变量,例如要使用哪个 SHELL、哪个 USER / LOGNAME、哪个 MAILTO 地址、哪个 HOME、哪个 PATH 等。它还取决于您的发行版的 cron。BSD 派生、vixiecron...等等。这就是为什么有详细手册的原因。 (2认同)