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

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

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

我按照说明这里社区/AWStats

它说转到以下文件:/etc/crontab

该文件中已经包含一些信息。这是主crontab文件还是其他什么?我在网上看到过一些使用随 一起弹出的文件的说明crontab -e

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

如果我以非 root 用户身份安排一项任务,它是否会按照指定的时间间隔自行运行,而不会出现任何问题?

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

答案1

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

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 文件,我不知道结果会怎样。它可能直到下次重新启动才会生效,并且任何错误可能都很难调试。

答案2

每个用户都有自己的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 中,几乎所有其他操作都无需重启即可完成。当然也有例外,但总体来说这个说法是正确的。

相关内容