系统 Crontab 或根 Crontab

系统 Crontab 或根 Crontab

系统定时任务:

/etc/crontab

根 crontab:

sudo crontab -u root -e

哪种方式是首选?因为它们都在管理权限内运行任务。

答案1

/etc/crontab是系统范围的 crontab。

的格式/etc/crontab是这样的:

# m h dom mon dow user      command
*   *  *   *   *  someuser  echo 'foo'

虽然crontab -e是针对每个用户的,但值得一提的是,没有-u参数的 crontab 命令会转到当前用户的 crontab。您可以crontab -e -u <username>编辑特定用户的 crontab。

请注意,在每用户 crontab 中没有“用户”字段。

# m h  dom mon dow  command
*   *   *   *   *   echo 'foo'

crontab 的一个可能令人困惑的方面是 root 也有自己的 crontab。例如crontab -e -u root不会编辑/etc/crontab 参见配置计划任务

在 Linux 发行版中,每个用户的 crontab 通常存储在:/var/spool/crontabs/<username>

参考

https://superuser.com/questions/290093/difference- Between-etc-crontab-and-crontab-e

答案2

/etc/cron.d(及其同级 cron.daily/weekly/monthly)是所有系统 crontab 的首选。您不需要触摸 /etc/crontab。

如果您计划管理或自动化事务,则必须根据其功能将多个文件中的 cron 条目分开。 /etc/cron.d 下的文件可以通过包或配置管理工具(如 puppet 和 Chef)轻松管理。 Root 的 crontab OTOH 实际上无法由人类以外的任何人维护。

简而言之,对于系统内容,您可以使用 /etc/cron.*。如果您希望 root 用户执行某些操作,请使用 root 的 crontab。 /etc/crontab 应该保持不变并由包管理。

相关内容