问题描述
我试图为我的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中,无需重启即可完成几乎所有其他操作。当然也有例外,但总的来说,这种说法是正确的。