用户crontab存储在哪里?

由于升级我的用户的crontab已被删除。 这不是今年第一次发生这种情况,每次恢复它都会很痛苦。

我希望能够为我的用户备份crontab,但为此我需要知道它的存储位置。

实际上,不建议手动处理这些文件。 每个crontab手册页:

但是每个用户都可以拥有自己的crontab
这些是/var/spool/cron/crontabs ,它们不是
打算直接编辑。

/var/spool下的文件被认为是临时/工作的,这就是为什么它们可能在升级过程中被删除的原因,尽管仔细查看cron软件包的升级脚本可能会对此有所了解。

无论如何,备份cron条目或将它们保存在主目录中的文件中始终是一个好习惯。

我假设你正在使用crontab -e来动态创建crontab文件。 如果是这样,您可以通过执行crontab -l获取crontab文件的“副本”。 管道到文件以获得“备份”:

 crontab -l > my-crontab 

然后,您可以编辑my-crontab文件以添加或修改条目,然后通过将其提供给crontab来“安装”它:

 crontab my-crontab 

这与crontab -e执行相同的语法检查。

它存储在用户名下的/var/spool/cron/crontabs文件夹中。

我终于找到了为什么我的crontabs和Postfix安装在启动后不断破坏。 这是一个非常愚蠢的原因,但……

我将/var/spool安装为tmpfs RAM驱动器。

这听起来很愚蠢,但是我曾经按照旧的SSD调整之一来延长SSD的使用寿命。 在这样做时,我盲目地将/tmp/var/tmp/var/spool作为tmpfs挂载而不考虑其影响。 我认为/var/spool就像/proc//run/并且只在会话期间有用。 我显然是错的。

要列出系统中所有用户的所有cron作业:

 for user in $(cut -f1 -d: /etc/passwd) do echo $user crontab -u $user -l done 

您的问题的替代方法是将它们放在cron.d文件夹中,并指定每个cron的相应用户,如示例所示:

 00 01 * * * user /home/user/user-script.sh