我应该编辑 /etc/crontab 还是以 root 身份运行 crontab -e?

mar*_*v81 48 linux cron ubuntu-14.04

我正在设置必须以 root 身份运行的常规系统维护任务。我计划默认使用 Ubuntu 14.04 LTS 附带的 cron 风格。

我看到前任管理员(离开公司后)直接编辑了 /etc/crontab。但是我知道另一种可能的方法是crontab -e作为 root使用。是否有任何令人信服的论据来使用其中之一,还是取决于偏好?

HBr*_*ijn 66

需要注意的是,个人 crontab ( crontab -e) 中的作业始终以其所有者身份执行,其中/etc/crontab包含一个额外的必填<user>字段,允许管理员将作业配置为以非 root 用户身份运行。

编辑系统 crontab 或为 root 设置个人 crontab 可能更具便携性,并非特定于某些 Linux 发行版,并且可以说更便于个人维护,所有作业都在一个文件中,但是:

我个人更喜欢第三种选择:对于每个计划任务删除要么

  • /etc/cron.d/带有 cron 片段的文件
  • 相关/etc/cron.[hourly |daily |weekly |monthly]目录中的可执行文件(脚本)。

这更容易编写脚本(您可以简单地创建/覆盖/删除此类文件,而不必在单个 crontab 文件的内容中胡思乱想)并且可以很好地与配置管理工具配合使用,这就是包管理器已经具备的功能反正做。

中的作业/脚本/etc/cron.[hourly |daily |weekly |monthly]始终以 root 身份执行,其中的 cron 片段/etc/cron.d/允许设置自定义计划以及以不同用户身份运行,并<user>/etc/crontab.

  • 编辑 `/etc/crontab` 的一个缺点是每当你更新 `cron` 包时都需要合并。如果你只是将一个新文件添加到 `/etc/cron.*` 目录之一,你就不会遇到这个问题。 (18认同)
  • 你应该在大多数发行版中添加它`/etc/cron。[hourly |daily |weekly |monthly]` 包含 *executables* 而 `/etc/cron.d` 包含 crontabs。除此之外,+1。 (2认同)

小智 15

我记得最crontab -e清楚的是,它有一个额外的优势,它在安装之前验证 crontab 语法,如果你犯了错误,它会出错并恢复以前的语法。这样,如果语法错误,以前工作的任何东西都不会突然停止。我认为最佳实践是使用实用程序,例如运行visudo而不是/etc/sudoers直接编辑。

  • +1 关于语法验证的好点,虽然它可以识别一些语法错误,但它也远非万无一失(即它会很高兴地允许您在第 6 列中输入带有用户名的 `/etc/crontab` 行)。- 虽然我想争辩说使用交互式工具不是*“最佳实践”*,但您应该使用 Puppet/Salt/Ansible 等工具自动化,并且首先不应再手动配置服务器。另一方面,如果你是老派,那么确实要使用你的工具。 (2认同)