尝试设置一项日常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/
cron
cron
/var/spool/cron/crontabs/foobar
foobar
cron
/etc/crontab
:
这是系统cron
表(crontab
文件),这里没有调用用户的概念,因为只有超级用户可以编辑此文件,此文件需要 7 个字段,在空格/制表符分隔的第 6 个字段处有一个额外的用户名字段。这也适用于cron
中的所有文件/etc/cron.d/
。 的另一个区别crontab -e
是,您需要将文件作为编辑器或任何可以执行 I/O 的程序/shell 的参数打开,而 的文件将使用或或crontab -e
中提到的编辑器打开——第一个获胜。VISUAL
EDITOR
/usr/bin/editor
为什么你的命令失败了cron
:
因为shutdown
只能以超级用户或有能力的用户身份运行,而调用用户可能不属于该类别。您可以将 放在 的旁边或root
中,我通常总是更喜欢单独的用户表。crontab
sudo crontab -e
/etc/crontab
笔记:
默认情况下也cron
使用最小,并且也设置为(在 Ubuntu 中);这两个是常见的陷阱。PATH
SHELL
sh
dash
cron
在调试时,始终检查syslog
,并将相关命令的 STDOUT 和 STDERR 重定向到文件以供稍后分析。
答案2
当你编辑时,/etc/crontab
你正在编辑一个全局的 crontab
当您通过 编辑时crontab -e
,您正在编辑本地的个人文件。编辑器在临时文件上启动,以便在将文件写入其实际位置之前对其进行检查。
当你编辑、保存并退出编辑器时(你必须退出文件检查和复制过程才能进行),你需要确认收到了一条消息,提示“已安装新的 crontab”