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


18

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

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

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


在系统中的位置和格式。
Rui F Ribeiro

格式?从2个示例中,我已经看到它也具有5个时间单位语法,或者将其与混淆crontab
Arcticooling

Answers:


24

的差异中记录了详细cron(8)联机帮助 Debian中。主要区别在于,这些/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代替。


1
对于一个实际示例,其中的项目cron.d通常是通过软件包安装添加的,而各个crontab文件中充满了由相应用户创建的内容。IE certbotletsencrypt软件包cron.d会在其中添加一个条目-在该软件包可用之前,sysadmin(root)会在root用户的crontab指向shell脚本等的目录中添加一个条目。使证书保持最新。
ivanivan

谢谢斯蒂芬!为什么建议您使用每小时/每周/每月的cron目录?顺便说一句,为什么那里的手册页叫cron(8)的含义是什么8(crontab的手册页名为crontab(1))。
Arcticooling

1
@Arcticooling,请参阅此问题以获取对(8)
user4556274 '18

每小时等目录使添加作业变得更简单(无需弄清楚确切的语法),更重要的是,允许系统根据情况改变实际执行时间。在不总是使用的系统上,这特别有用anacron
斯蒂芬·基特

1
hourly|daily|weekly|monthly目录的缺点是(AFAICT),它们始终以root身份运行,并且不直接支持以较小的特权运行。
ilkkachu

5

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.