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


52

我试图为我的Web服务器自动刷新awstats,并了解我需要使用cron进行设置。那么每个用户都有一个crontab文件吗?

我在这里遵循社区/ AWStats 的指示

它说去文件在: /etc/crontab

该文件已包含一些信息。这是主要crontab文件吗?我在网上看到了一些使用弹出的文件的说明crontab -e

什么是正确使用的文件以及执行此操作的最佳方法?

如果我以非root用户身份安排任务,任务是否会在指定的时间间隔内独立运行而不会出现问题?

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

Answers:


50

什么是正确使用的文件以及执行此操作的最佳方法?

crontab -e 是执行此操作的最佳方法-这将使您可以轻松地编辑每个用户的crontab。

如果我以非root用户身份安排任务,任务是否会在指定的时间间隔内独立运行而不会出现问题?

是的,它将以该用户帐户的特权运行。

原则上,最好以可以逃脱的最低特权来运行计划的任务,因此,如果您要执行的操作不需要root,则不要使用root。如果你甚至都不需要能够访问您的帐户的文件和文件夹,那么你就可以创建一个新用户,并使用该用户帐户用于这项任务。另一方面,如果您的任务确实需要root用户,请使用root的crontab(su/ sudo su要root然后使用crontab -e)。

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

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

为什么不直接编辑文件?它在哪里?

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

该系统不是为最终用户设计的,不能直接编辑这些文件,并且实际上,文件DO NOT EDIT THIS FILE顶部在此位置上面有一个严厉警告。相反,该文件被设计为可编辑crontab -e的文件,通过该文件可设置文件的临时镜像/tmp进行编辑-无需发出严厉的警告-之后,文件将检查并安装永久crontab文件本身。这一切都可以在没有超级用户许可的情况下完成。

如果您确实直接编辑了crontab文件,我将不知道结果如何。可能直到下一次重新启动后它才会生效,并且任何错误都可能难以调试。


5
crontab -e让您无需sudo即可编辑用户crontab。用户crontabs在/var/spool/cron/crontabs其中是没有超级用户权限就无法访问的目录(但是,一旦cron放弃特权,它仍然能够读取它)。即使您确实使用sudo尝试直接编辑文件,您也会在顶部看到一个大警告:“请勿编辑此文件”-文件设计为使用crontab命令进行编辑,该命令使用临时副本/tmp然后安装保存后保存。
thomasrutter

25

每个用户都有自己的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很蠢!是的,我说了。始终确保输入application/command/script要使用的完整路径,因为crontab无法使用.bashrc或类似方式。您始终必须确保告诉cron它可以在哪里找到文件和目录。

要回答其余问题:

当然它将独立运行,这就是它的作用。但是您需要检查cronjob是否确实做到了,或者是否缺少某些东西。例如,登录到日志文件以查看其是否确实有效。

不,不需要重新启动。如果安装新内核,通常仅需要使用linux重新启动。要使用它,您需要重新启动。在Linux中,无需重启即可完成几乎所有其他操作。当然也有例外,但总的来说,这种说法是正确的。


检查你的时间格式审查本网站crontab.guru
ASTM
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.