系统定时任务:
/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 应该保持不变并由包管理。