我应该编辑/ etc / crontab或以root用户身份运行crontab -e?

我正在设置定期的系统维护任务,这些任务必须以root身份运行。 我打算使用Ubuntu 14.04 LTS自带的cron的风格作为默认。

我看到以前的pipe理员(谁离开公司)直接编辑/ etc / crontab。 不过,我知道另一种可能的方法是使用crontab -e作为根。 有没有什么引人注目的论点来使用这个或那个,或者是否偏好?

注意个人crontab( crontab -e )中的作业总是以它们的所有者的身份执行,其中/etc/crontab包含一个额外的强制<user>字段,允许pipe理员将作业configuration为以非易失性根用户。

编辑系统crontab或者为root设置一个个人crontab可能会更便于移植,而不是特定于某些Linux发行版, 对于一个人来说维护起来更方便,所有作业都在一个文件中,但是:

就我个人而言,我赞成第三种select :对于每个计划的任务下降

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

这对于脚本来说更容易(您可以简单地创build/覆盖/删除这些文件,而不必在单个crontab文件的内容中混淆),这对于configurationpipe理工具来说非常合适,而这正是软件包pipe理器已经无论如何。

/etc/cron.[hourly |daily |weekly |monthly]中的作业/脚本始终以root用户身份执行,其中/etc/cron.d/中的cron片段允许设置自定义日程安排,并以不同的用户身份运行与在/etc/crontabfind的相同的强制<user>字段。

我记得最好的是, crontab -e还有一个额外的好处,就是它在安装之前validationcrontab的语法,如果你犯了一个错误,将会出错并且恢复以前的版本。 这样,以前工作的任何东西不会突然停止,如果你的语法错了。 我认为最好的做法是使用这些工具,比如直接运行visudo而不是编辑/etc/sudoers

这是一个真正的风格问题,有多种方法由操作系统提供的原因。 只要是一致的,不要混淆和匹配,如果你不想混淆别人(或者你自己一段时间不处理系统) – 如果很难看到整个主机实际上安排了哪些任务,以讨厌的惊喜结束。

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

  # crontab -u <user> -e 

你也可以添加sudo

正如@rackandboneman所说,没有必要混淆/etc/cron.d/文件。 如果是关于用户的cron作业,请使用crontab命令的function。