cron.d(如在 /etc/cron.d/ 中)和 crontab 之间有什么区别?

Arc*_*ing 37 cron debian

目录 cron.d(如/etc/cron.d/)和之间的主要区别是什么crontab

据我了解,人们可以创建一个文件,/etc/cron.d/my_non_crontab_cronjobs然后将任何想要的内容放入其中,就像将它们放入crontabvia 一样crontab -e

那么两者的主要区别是什么呢?

Ste*_*itt 47

Debiancron(8)联机帮助页中详细记录了这些差异。主要区别在于/etc/cron.d填充了单独的文件,而crontab每个用户管理一个文件;因此,管理/etc/cron.d使用脚本的内容(用于自动安装和更新)更容易,并且crontab使用编辑器更容易管理(对于最终用户而言)。

其他重要的区别是并非所有发行版都支持/etc/cron.d,并且其中的文件/etc/cron.d必须满足一定数量的要求(除了有效的 cron 作业):它们必须由 root 所有,并且必须符合run-parts' 命名约定(没有点,只有字母、数字、下划线和连字符)。

如果您使用考虑/etc/cron.d,它通常是值得考虑的一个/etc/cron.hourly/etc/cron.daily/etc/cron.weekly,或/etc/cron.monthly代替。

  • 对于现实世界的示例,“cron.d”中的项目通常是通过包安装添加的,而各种“crontab”文件充满了相应用户创建的内容。IE、“certbot”或“letsencrypt”包在“cron.d”中放置一个条目 - 在该包可用之前,系统管理员(root)将在 root 用户的“crontab”中添加一个条目,指向 shell 脚本等。使证书保持最新。 (2认同)
  • `hourly|daily|weekly|monthly` 目录的缺点是(AFAICT),它们总是以 root 身份运行,并且不直接支持以较低权限运行。 (2认同)

ilk*_*chu 6

我想说的主要区别是明显的:/etc/crontab/etc/cron.d是不是由普通用户修改,而每个用户的crontab中/var/spool/croncrontab工具编辑,是。(当然,受cron.allowcron.deny约束。)当然,在您是管理员的系统上,您可以使用任一个。在共享系统上,普通用户只能使用一个。

与此相关的是系统范围文件中的额外字段,即作业运行所使用的用户名。