我正在设置必须以root用户身份运行的常规系统维护任务。我计划使用Ubuntu 14.04 LTS随附的cron样式作为默认样式。
我看到以前的管理员(他离开公司以来)直接编辑了/ etc / crontab。但是我知道另一种可能的方法是使用crontab -e
root。是否有任何引人入胜的论点来使用其中之一,还是仅凭偏好?
我正在设置必须以root用户身份运行的常规系统维护任务。我计划使用Ubuntu 14.04 LTS随附的cron样式作为默认样式。
我看到以前的管理员(他离开公司以来)直接编辑了/ etc / crontab。但是我知道另一种可能的方法是使用crontab -e
root。是否有任何引人入胜的论点来使用其中之一,还是仅凭偏好?
Answers:
请注意,个人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.*
目录中,则不会有此问题。
/etc/cron.[hourly |daily |weekly |monthly]
拥有可执行文件,同时/etc/cron.d
持有的crontab。除此之外,+ 1。
尽我所记得,它crontab -e
还有一个额外的优势,即它在安装crontab语法之前先对其进行了验证,如果出错,将出错并恢复以前的版本。这样,如果您弄错了语法,以前所有有效的操作都不会突然停止。我认为最佳实践是使用实用程序,例如运行visudo
而不是/etc/sudoers
直接编辑。
/etc/crontab
在第6列中输入带有用户名的行)。-尽管我想证明使用交互式工具不是“最佳实践”,但是您应该使用Puppet / Salt / Ansible等工具自动化,并且一开始就不应该再手动配置服务器。另一方面,如果您是守旧派,那么确实可以使用您的工具。
为了确保添加需要特定用户权限的cron作业,我个人使用以下命令:
# crontab -u <user> -e
您也可以添加sudo
。
就像@rackandboneman所说的那样,不需要弄乱/etc/cron.d/文件。如果有关用户的cron作业,请使用crontab
命令的功能。