我正在设置定期的系统维护任务,这些任务必须以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/crontab
find的相同的强制<user>
字段。
我记得最好的是, crontab -e
还有一个额外的好处,就是它在安装之前validationcrontab的语法,如果你犯了一个错误,将会出错并且恢复以前的版本。 这样,以前工作的任何东西不会突然停止,如果你的语法错了。 我认为最好的做法是使用这些工具,比如直接运行visudo
而不是编辑/etc/sudoers
。
这是一个真正的风格问题,有多种方法由操作系统提供的原因。 只要是一致的,不要混淆和匹配,如果你不想混淆别人(或者你自己一段时间不处理系统) – 如果很难看到整个主机实际上安排了哪些任务,以讨厌的惊喜结束。
为了确保添加一个需要特定用户权限的cron作业,我个人使用下面的命令:
# crontab -u <user> -e
你也可以添加sudo
。
正如@rackandboneman所说,没有必要混淆/etc/cron.d/文件。 如果是关于用户的cron作业,请使用crontab
命令的function。