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

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

两者的目的有什么区别

  • /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

谢谢。

答案1

/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

您可以看到这些条目与 中的条目相匹配/etc/crontab

在设计之前cron.d,需要编写一个脚本编辑 /etc/crontab做同样的工作,这是更辛苦的工作,而且可能会出错。

/var/spool/cron/crontabs是命令管理的东西crontab

所以...

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

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

相关内容