用户 crontab 存储在哪里?

用户 crontab 存储在哪里?

自从升级以来,我的用户的 crontab 就被清除了。这不是今年第一次发生这种情况,每次恢复它都很麻烦。

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

答案1

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

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

下面的文件/var/spool被视为临时/工作文件,这就是为什么它们可能会在升级期间被删除,但仔细查看软件包cron的升级脚本可能会对此有所了解。

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

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

crontab -l > my-crontab

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

crontab my-crontab

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

答案2

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

答案3

我终于发现为什么我的 crontabs 和 Postfix 安装在启动后不断中断。这是一个非常愚蠢的原因,但是...

我已将/var/spool其安装为tmpfsRAM 驱动器。

听起来很愚蠢,事实也确实如此,但我遵循了旧的 SSD 调整方法之一来延长 SSD 的使用寿命。在这样做时,我盲目地安装了 和/tmp/var/tmp/var/spool没有tmpfs考虑后果。我以为/var/spool和 一样/proc//run/,并且它仅在会话期间有用。我显然错了。

答案4

列出系统中所有用户的所有 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

相关内容