编辑crontab文件的正确方法是什么?

我正试图为我的网络服务器自动刷新awstats,我知道我需要使用cron来设置它。 那么每个用户都有一个crontab文件?

我是按照这里community/AWStats的说明进行的。

它说要到文件中去。/etc/crontab

该文件中已经有一些信息了。 这是主crontab文件还是什么? 我在网上看到一些说明,使用crontab -e弹出的文件。

使用什么文件才是正确的,最好的方法是什么?

如果我以我的非root用户身份安排一个任务,它能在指定的时间间隔内自行运行,没有问题吗?

在将cron job保存在crontab文件中后,我是否需要重新启动服务器,然后它才会开始工作?

**使用什么文件才是正确的,最好的方法是什么?

crontab -e是最好的方法 - 这将允许你轻松编辑每个用户的crontabs。

**如果我以我的非root用户身份安排一个任务,它是否会在指定的时间间隔内自行运行,而没有任何问题?

是的,它将以该用户账户的权限运行。

作为一项原则,最好以你能接受的最低权限运行计划任务,所以如果你正在做的事情不需要root权限,就不要使用root权限。 如果你甚至不需要能够访问账户的文件和文件夹,那么你可以创建一个新的用户,并且只为该任务使用该用户账户。 另一方面,如果你的任务*需要root,就使用root的crontab(su/sudo su到root然后使用crontab -e)。

**在crontab文件中保存cron工作后,我是否需要重新启动服务器,才能开始工作?

不,它将直接开始工作(嗯,下一个可能的计划时间)。

**为什么不直接编辑该文件? 它的位置在哪里?

用户的crontab文件位于/var/spool/cron/crontabs中,但它们的权限是这样设置的:没有超级用户的权限,它们不能被遍历(但一旦打开,cron进程放弃了权限,它仍然可以访问该文件)。

系统并不是为最终用户直接编辑这些文件而设计的,事实上,文件的顶部有一个严厉的 "请勿编辑此文件 "的警告,就是这个意思。 该文件被设计成通过 "crontab -e "来编辑,它在"/tmp "中设置了一个临时的镜像文件供编辑--没有严厉的警告--之后,它检查并安装永久的crontab文件本身。 这一切无需超级用户权限即可完成。

如果你直接编辑crontab文件,我不知道结果会是什么。 可能在下次重启前不会生效,而且任何错误都很难调试。

评论(1)

每个用户都有自己的`crontab'。

要看到它,只需输入

crontab -l

是的,你没有看错,当你想添加一个 "crontab "时,只需做

crontab -e

第一次时,你会被问及与`crontab'一起使用的编辑器。如你所说,你是个新手,我建议你使用nano,它是最简单的编辑器。

crontab本身的工作方式是这样的

MIN =  Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW =  Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line

因此,例如要在星期一每15分钟触发一个工作,你可以这样做

*/15 * * * mon /home/me/yourscript.sh

是的,非常重要的是,你要把你的cronjob放到有足够权限执行它的用户的crontab里。

因此,如果你的脚本需要用root或一个特殊的用户,请确保su到该用户并在那里添加cronjob。

同样非常重要的是!

cronjob是愚蠢的!是的,我说了。一定要确保输入你正在使用的 "应用程序/命令/脚本 "的完整PATH,因为crontab不会在".bashrc "或类似情况下工作。你总是要确保你告诉cron它能在哪里找到文件和目录。

回答你的其他问题:

当然,它将自己运行,这就是它的作用。但你需要检查cronjob是否真的会这样做,或者它是否遗漏了什么。例如,登录一个日志文件,看看它是否真的工作。

而且,不需要重启。通常只有在你安装了新的内核时才需要重新启动Linux。为了使用它,你需要重新启动。在Linux中,几乎所有其他的事情都可以不用重启。*当然也有例外,但一般来说,这种说法是正确的。

评论(1)