![`/etc/crontab`、`/etc/cron.d/` 和 `/var/spool/cron/crontabs/root` 下的文件之间的区别?](https://linux22.com/image/141356/%60%2Fetc%2Fcrontab%60%E3%80%81%60%2Fetc%2Fcron.d%2F%60%20%E5%92%8C%20%60%2Fvar%2Fspool%2Fcron%2Fcrontabs%2Froot%60%20%E4%B8%8B%E7%9A%84%E6%96%87%E4%BB%B6%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8C%BA%E5%88%AB%EF%BC%9F.png)
两者的目的有什么区别
/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/