我正在尝试自动刷新我的网络服务器的 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 中,几乎所有其他操作都无需重启即可完成。当然也有例外,但总体来说这个说法是正确的。