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

fiz*_*ink 9 linux awstats cron

似乎所有使用/调度 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
Run Code Online (Sandbox Code Playgroud)

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

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

Ste*_*ski 13

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

/etc/cron.hourly,包括cron.dailycron.weekly&/etc/cron.d等由大多数 Linux 发行版提供,因为它们很方便,并且可以很好地与自动化工具(如包管理器和配置管理系统)配合使用。/etc/cron.hourly/foo与编写编辑现有 crontab 的脚本相比,包管理器很容易将文件放入其中。通过程序包管理器以编程方式编辑文件可能会损坏文件、添加重复条目、删除错误的行、弄乱注释等。请参阅Editfiles Considered Harmful进行一些讨论,因为这个问题已经存在一段时间了。

运行 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.