当前位置: 首页>>技术教程>>正文


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

问题描述

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

我遵循了here社区/AWStats的指示

它说去文件在:/etc/crontab

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

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

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

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

最佳思路

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

crontab -e是执行此操作的最佳方法-这将使您轻松编辑per-user 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文件,我将不知道结果如何。可能直到下一次重新启动后它才会生效,并且任何错误都可能难以调试。

次佳思路

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7874.html,未经允许,请勿转载。