`/etc/crontab`、`/etc/cron.d/` 和 `/var/spool/cron/crontabs/root` 下的文件的区别?

Tim*_*Tim 6 cron

目的和目的有什么区别

  • /etc/crontab
  • 下的文件 /etc/cron.d/
  • /var/spool/cron/crontabs/root

如果您想添加一个 cron 作业,您会将它添加到哪个文件中?

cron(8) 的联机帮助页说

/etc/cron.d/:包含为不同用户存储的系统cronjobs的目录。

“为不同用户存储”是什么意思?它看起来与/var/spool/cron/crontabs/.

https://unix.stackexchange.com/a/478581/674从 cron 手册页引用:

一般来说,系统管理员不应该使用/etc/cron.d/,而是使用标准的系统crontab /etc/crontab。

将系统管理员添加作业/etc/crontab/etc/cron.d//var/spool/cron/crontabs/root

谢谢。

Ste*_*ris 7

/etc/crontab是“系统”作业的历史位置。它不一定在所有系统上都使用(例如 RedHat 7 和衍生产品有一个“空”条目),或者它可能有命令来调用cron.daily和其他人。

/etc/cron.d/*本质上与/etc/crontab但拆分为单独的文件相同。这使得包可以轻松添加新的 cron 条目;只需将它们放在此目录中即可。

因此,例如,在 CentOS 7 上:

% rpm -ql sysstat | grep cron
/etc/cron.d/sysstat

% sudo cat /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
Run Code Online (Sandbox Code Playgroud)

您可以看到这些条目与/etc/crontab.

cron.d设计之前,脚本需要编辑 /etc/crontab才能完成相同的工作,这是更辛苦的工作,并且可能会出错。

/var/spool/cron/crontabscrontab命令管理的东西。

所以...

如果要由包部署 cron 作业,则该包应将文件放入/etc/cron.d/. 企业自动化工具也可以做到这一点。

如果系统管理员(或任何其他用户)想要添加一个 cron 作业,crontab -e那么它将被放入/var/spool/cron/crontabs/