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

tim*_*ram 87 cron

我正在尝试为我的网络服务器自动刷新 awstats,并了解我需要使用 cron 来设置它。所以每个用户都有一个crontab文件?

我按照这里的说明社区/AWStats

它说要转到以下位置的文件: /etc/crontab

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

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

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

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

tho*_*ter 89

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

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

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

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

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

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

不,它会立即开始工作(好吧,下一个可能的预定时间)。

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

用户 crontab 文件位于 中/var/spool/cron/crontabs,但它们的权限设置为在没有超级用户权限的情况下无法访问(但是一旦打开并且 cron 进程放弃了它仍然可以访问该文件的权限)。

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

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

  • `crontab -e` 允许你在没有 sudo 的情况下编辑你的用户 crontab。用户 crontabs 位于 `/var/spool/cron/crontabs` 中,这是一个没有超级用户权限就不能访问的目录(但这样一来,一旦 cron 放弃特权,它仍然可以读取它)。即使您确实使用 sudo 尝试直接编辑文件,您也会在顶部看到一个大警告,“请勿编辑此文件” - 该文件旨在使用 `crontab` 命令进行编辑,该命令使用临时副本`/tmp` 然后在保存后安装它。 (6认同)

s1m*_*mel 37

每个用户都有自己的crontab.

要查看它,只需输入

crontab -l
Run Code Online (Sandbox Code Playgroud)

并且,是的,您没看错,当您想添加一个时,crontab只需执行

crontab -e
Run Code Online (Sandbox Code Playgroud)

第一次会询问您要使用的编辑器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
Run Code Online (Sandbox Code Playgroud)

所以例如只在星期一每 15 分钟触发一次工作,你就这样做

*/15 * * * mon /home/me/yourscript.sh
Run Code Online (Sandbox Code Playgroud)

是的,将 cronjob 放入具有足够执行权限的用户的 crontab 中非常重要。

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

也非常重要!

cronjob 是愚蠢的!是的,我说过。始终确保输入application/command/script您正在使用的完整路径,因为 crontab 将无法使用.bashrc或类似。您必须始终确保告诉 cron 它可以找到文件和目录的位置。

要回答您的其余问题:

当然,它会自行运行,这就是它的用途。但是您需要检查 cronjob 是否真的做到了,或者它是否遗漏了什么。例如,登录到日志文件以查看它是否真的有效。

不,不需要重新启动。如果您安装了新内核,通常只需要重新启动 linux。要使用它,您需要重新启动。在 Linux 中,几乎所有其他事情都可以在不重启的情况下完成。当然也有例外,但总的来说这个说法是正确的。

  • (第一行:它=所有格,它=“它是”或“它具有”。例如参见*[如何使用它和它](http://www.wikihow.com/Use-Its-and-It %27s)*。) (2认同)