保存Crontab文件

4
关于Crontab的一个简单问题,我想问的是我保存Crontab文件的位置是否重要?(使用crontab -e创建时间依赖的作业),还是可以从任何目录读取?
我之所以问这个问题,是因为我的Crontab文件似乎被删除了,当我使用crontab -l时没有返回任何内容。然而,我认为这是因为我将它保存为临时文件:Creating more permanent crontab files

为什么以及如何将其保存为临时文件?您应该调用 crontab -e,不必担心它保存在哪里 - 我猜通常保存在 /var/spool/cron/crontabs 下面 - 至少在 Ubuntu 上是这样。 - user unknown
通过编辑现有的crontab,输入crontab -e并进行修改。然后点击escape键,然后输入:wq并按下回车键。 - Phoenix
3个回答

7

通常情况下,您使用crontab来创建文件,并将其存储在适合您机器的正确位置。

$ crontab < $HOME/etc/crontab

然后您可以使用crontab -l命令来列出它。
$ crontab -l
#   @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $
#   Crontab file for Home Directory for Jonathan Leffler (JL)
#-----------------------------------------------------------------------------
#Min     Hour    Day     Month   Weekday Command
#-----------------------------------------------------------------------------
0        *       *       *       *       /usr/bin/ksh /work4/jleffler/bin/Cron/hourly
1        1       *       *       *       /usr/bin/ksh /work4/jleffler/bin/Cron/daily
23       1       *       *       1-5     /usr/bin/ksh /work4/jleffler/bin/Cron/weekday
2        3       *       *       0       /usr/bin/ksh /work4/jleffler/bin/Cron/weekly
21       3       1       *       *       /usr/bin/ksh /work4/jleffler/bin/Cron/monthly
$

我的源文件保存在哪里并不重要(但实际上它在$HOME/etc下受源代码控制)。系统有自己需要的文件副本。
如果你尝试手动放置文件,你会有麻烦。可能会起作用,但也可能不行(并且可能会改变)。我不会冒险使用非正式命令来存储由crontab使用的crontab文件。

3

是的,cron文件必须放在/var/spool/cron目录中(或者类似的目录,具体取决于系统)。请参见man 8 cron


但是最好的选择是把它们放在/etc的某个位置。 - Fred Foo
1
@larsmans:/etc/cron.{daily,hourly,weekly,monthly}/* 文件不是标准的 cron 文件。/etc/cron.d/* 文件是标准的 cron 文件,但是它们是为软件包管理器而设计的,而不是为人类而设计的。人类应该使用 cron API,该 API 将把文件放在特定系统所需的任何位置。 - Seth Robertson
@Seth:没错,但如果/etc/cron.{daily,hourly,weekly,monthly}可用,则优先写入该目录而不是直接写入/var/spool/cron - Fred Foo

1
如果您使用 cron api(对于大多数系统,crontab -ecrontab filename),则您的 cron 作业将永久保存在适当的位置,无论您是否退出。

唯一不会发生这种情况的方式是,如果您被管理机构阻止使用 cron(这并不罕见)。

请记住,您创建的文件格式为man 5 crontab格式。 这不是您的 shell 脚本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接