我应该使用 cron.hourly 还是 crontab?

我应该使用 cron.hourly 还是 crontab?

似乎所有使用/安排 awstats 的建议都是通过 crontab 进行的,例如:( 0 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=mysite -update >/dev/null每小时运行 awstats)。

但是,如果我检查crontab -l,它会说我的用户的 crontab 是空的。

但是,当我检查时/etc/cron.hourly,我得到了一个包含以下内容的 awstats 文件:

#!/bin/bash
exec /usr/share/awstats/tools/awstats_updateall.pl now         -configdir="/etc/awstats"           -awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" >/dev/null
exit 0

只是想让你知道,我的 awstats 已更新完毕,它创建了报告,一切都很好。

运行 crontab 命令是否会在指定的 cron 文件夹中创建条目?(即 cron.hourly 或 cron.daily 等)?或者它们不相关?如果它们相关,为什么我的用户没有 crontab 条目?

答案1

crontab -e是创建 crontab 的传统方法。我觉得它很笨拙而且过时,但人们仍然使用它。

/etc/cron.hourly,包括cron.dailycron.weekly&/etc/cron.d等,它们很方便,并且与包管理器和配置管理系统等自动化工具配合良好。/etc/cron.hourly/foo与编写脚本编辑现有的 crontab 相比,包管理器将文件放入其中非常容易。通过包管理器以编程方式编辑文件可能会损坏文件、添加重复条目、删除错误的行、搞砸注释等。请参阅编辑文件被认为有害进行一些讨论,因为这个问题已经存在了一段时间了。

运行 crontab 命令是否会在指定的 cron 文件夹中创建一个条目?

不是。/etc/cron.daily/foo是由包管理器创建的,或者手动创建的。运行 crontab 命令时不会创建。crontab -e会在 下创建 crontab /var,例如/var/spool/cron/root

我更喜欢/etc/cron.$period/foo和,/etc/cron.d因为这种层次结构整洁有序,而且很容易为我的配置管理系统编写脚本。/etc/crontab在 Linux 上也可用,但它有点庞大,很难通过编程进行编辑。FreeBSD 等系统支持/etc/crontab/etc/periodic

相关内容