cron 作业 - 编辑“/etc/crontab”和“crontab -e”之间的区别

cron 作业 - 编辑“/etc/crontab”和“crontab -e”之间的区别

尝试设置一项日常cron工作来关闭服务器。

一个消息来源建议编辑/etc/crontab

另一个建议crontab -e(与sudo

我尝试了后者,但我的进程没有运行(如果我没记错的话,它是30 23 * * * shutdown -h

我还注意到,在 nano 编辑器中,它正在处理一个.tmp文件?(nano 顶部显示/tmp/crontab.9zeTNt/crontab:)

发生了什么事?我该如何解决?

答案1

crontab -e

可按用户使用;为调用用户打开表以供编辑(例如,如您所见,cron临时文件),并在保存内容时进行健全性检查。如果通过,则将文件移动到ie假脱机目录中,并以与调用用户相同的文件名保存。由于表是为调用用户名保存的(例如,假设用户名);由于所有作业都以该用户的身份运行,因此不需要用户名字段,此处的每个条目都需要 6 个字段(我想您已经知道这些)/tmp//tmp/crontab.<RANDOM>/crontab/var/spool/cron/crontabs/croncron/var/spool/cron/crontabs/foobarfoobarcron

/etc/crontab

这是系统cron表(crontab文件),这里没有调用用户的概念,因为只有超级用户可以编辑此文件,此文件需要 7 个字段,在空格/制表符分隔的第 6 个字段处有一个额外的用户名字段。这也适用于cron中的所有文件/etc/cron.d/。 的另一个区别crontab -e是,您需要将文件作为编辑器或任何可以执行 I/O 的程序/shell 的参数打开,而 的文件将使用或或crontab -e中提到的编辑器打开——第一个获胜。VISUALEDITOR/usr/bin/editor


为什么你的命令失败了cron

因为shutdown只能以超级用户或有能力的用户身份运行,而调用用户可能不属于该类别。您可以将 放在 的旁边或root中,我通常总是更喜欢单独的用户表。crontabsudo crontab -e/etc/crontab

笔记:

默认情况下也cron使用最小,并且也设置为(在 Ubuntu 中);这两个是常见的陷阱。PATHSHELLshdashcron

在调试时,始终检查syslog,并将相关命令的 STDOUT 和 STDERR 重定向到文件以供稍后分析。

答案2

当你编辑时,/etc/crontab你正在编辑一个全局的 crontab

当您通过 编辑时crontab -e,您正在编辑本地的个人文件。编辑器在临时文件上启动,以便在将文件写入其实际位置之前对其进行检查。

当你编辑、保存并退出编辑器时(你必须退出文件检查和复制过程才能进行),你需要确认收到了一条消息,提示“已安装新的 crontab”

相关内容