当前位置: 首页>>技术问答>>正文


用户crontab存储在哪里?

,

问题描述

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

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

最佳解决方法

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

Each user can have their own crontab, and though
these are files in /var/spool/cron/crontabs, they are not
intended to be edited directly.

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

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

我假设你使用crontab -e来即时创建crontab文件。如果是这样,您可以通过执行crontab -l来获得您的crontab文件的”copy”。将其传递到文件以获取”backup”:

crontab -l > my-crontab

然后,您可以编辑该my-crontab文件以添加或修改条目,然后通过将其提供给crontab来执行”install”:

crontab my-crontab

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

次佳解决方法

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

第三种解决方法

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

我将/var/spool安装为tmpfs RAM-drive。

听起来很愚蠢,但是我遵循旧SSD-tweaks之一来延长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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/199.html,未经允许,请勿转载。