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

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

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

我看到前任管理员(现已离开公司)直接编辑了 /etc/crontab。但是我了解到另一种可能的方法是使用crontab -eroot 权限。是否有任何令人信服的理由来使用其中一种,还是取决于个人喜好?

答案1

值得注意的是,个人 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

答案2

据我所知,crontab -e它还有一个额外的优势,即在安装 crontab 之前会验证语法,如果出现错误,它会出错并恢复以前的版本。这样,如果语法错误,之前运行的所有内容都不会突然停止。我认为最佳做法是使用实​​用程序,例如运行visudo而不是/etc/sudoers直接编辑。

答案3

为了确保添加需要特定用户权限的 cron 作业,我个人使用以下命令:

 # crontab -u <user> -e

sudo也可以添加。

正如@rackandboneman所说,没有必要弄乱/etc/cron.d/文件。如果问题与用户的cron作业有关,请使用crontab命令的功能。

答案4

这其实是一个风格问题,操作系统提供多种方法是有原因的。只要保持一致,不要混搭,如果你不想让别人感到困惑(或者在一段时间不处理系统之后让你自己感到困惑)——如果很难看到整个主机上实际安排了哪些任务,那么往往会以令人不快的意外告终。

相关内容