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


9

似乎所有使用/计划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条目?

Answers:


13

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

/etc/cron.hourly包括cron.dailycron.weekly/etc/cron.d等被大部分的Linux发行版,因为它们是方便,做工精良与自动化工具,如包管理和配置管理系统提供。/etc/cron.hourly/foo与编写脚本编辑现有crontab脚本相比,包管理器将文件拖放到其中非常容易。通过程序包管理器以编程方式编辑文件,可能会损坏文件,添加重复项,删除错误的行,破坏注释等。请参见被认为有害的Editfiles进行一些讨论,因为此问题已经存在了一段时间。

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

编号/etc/cron.daily/foo是由包管理器创建的,还是由手工创建的。运行crontab命令时不会创建它。crontab -e将在下创建crontab /var,例如/var/spool/cron/root

我更喜欢/etc/cron.$period/foo并且/etc/cron.d因为该层次结构是整齐有序的,并且易于为我的Configuration Management系统编写脚本。/etc/crontab也可以在Linux上使用,但是它有点单片并且很难以编程方式进行编辑。像FreeBSD这样的系统支持/etc/crontab/etc/periodic


1
感谢您的回答,我也更喜欢它,因为我习惯于将配置文件放在.d文件夹中(例如conf.d等)!
碳酸饮料

我只能同意这一点。我还更喜欢在/etc/crontab运行系统任务时使用系统,而不是使用root的crontab。这样,无需挖掘每个用户的crontab,就可以轻松知道系统的功能。
Spack

1
我同意这个答案。也许要提到其他一些区别:/etc/cron.$period/包含由root用户运行的自足脚本。OTOH /etc/cron.d/包含crontab -e格式为include的包含文件。最后,/ etc / cron *用于root运行脚本,而crontab -e所有用户均可使用。
Nils Toedtmann 2014年

crontab -e默认情况下,该命令很尴尬。因此,我创建了一个脚本cte,该脚本执行两个命令: export EDITOR=gedit然后crontab -e使编辑器更易于使用。
SDsolar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.