Answers:
什么是正确使用的文件以及执行此操作的最佳方法?
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文件,我将不知道结果如何。可能直到下一次重新启动后它才会生效,并且任何错误都可能难以调试。
每个用户都有自己的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 -e
让您无需sudo即可编辑用户crontab。用户crontabs在/var/spool/cron/crontabs
其中是没有超级用户权限就无法访问的目录(但是,一旦cron放弃特权,它仍然能够读取它)。即使您确实使用sudo尝试直接编辑文件,您也会在顶部看到一个大警告:“请勿编辑此文件”-文件设计为使用crontab
命令进行编辑,该命令使用临时副本/tmp
然后安装保存后保存。